Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不是';不利用浏览器缓存不适用于Javascript?_Javascript_Caching_Pagespeed_Google Pagespeed - Fatal编程技术网

为什么不是';不利用浏览器缓存不适用于Javascript?

为什么不是';不利用浏览器缓存不适用于Javascript?,javascript,caching,pagespeed,google-pagespeed,Javascript,Caching,Pagespeed,Google Pagespeed,当通过谷歌页面速度测试运行我的网站时,它说我需要“利用浏览器缓存” 在HTTP头中为静态资源设置过期日期或最长使用期限会指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。” 然后它列出了我的内部Javascript文件,为什么下面的代码不起作用并修复了这个问题 这是htaccess文件的外观: ## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "acces

当通过谷歌页面速度测试运行我的网站时,它说我需要“利用浏览器缓存” 在HTTP头中为静态资源设置过期日期或最长使用期限会指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。”

然后它列出了我的内部Javascript文件,为什么下面的代码不起作用并修复了这个问题

这是htaccess文件的外观:

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##

<FilesMatch "\\.(js|css|html|htm|php|xml)$">
SetOutputFilter DEFLATE
</FilesMatch>

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl|jpg|png|gif)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
##过期缓存##
过期于
过期按类型映像/jpg“访问1年”
过期按类型图像/jpeg“访问1年”
ExpiresByType image/gif“访问1年”
过期按类型图像/png“访问1年”
ExpiresByType文本/css“访问1个月”
ExpiresByType text/html“访问1个月”
过期按类型应用程序/pdf“访问1个月”
ExpiresByType文本/x-javascript“访问1个月”
过期按类型应用程序/x-shockwave-flash“访问1个月”
过期按类型图像/x图标“访问1年”
ExpiresDefault“访问1个月”
##过期缓存##
SetOutputFilter放气
mod_gzip_on Yes
是的
mod|gzip|item|u include file\(html?| txt | css | js | php | pl | jpg | png | gif)$
mod_gzip_item_包含处理程序^cgi脚本$
mod_gzip_项目包括mime^text/*
mod_gzip_item_包括mime^application/x-javascript*
mod_gzip_项_排除mime^image/*
mod_gzip_item_排除rspheader^内容编码:.*gzip*

谢谢

Javascript的官方mime类型是
application/Javascript
,试试这个

来源

x-
代表“实验性”并且不再与Javascripts一起使用

所有这些组合都已弃用、过时或过时:

text/x-javascript
text/javascript
application/x-javascript
application/ecmascript
配置中有更多错误的mime类型:

错误:
image/x-icon
右:
image/vnd.microsoft.icon

资料来源:

错误:
application/x-pdf
右:
application/pdf


来源:

Javascript的官方mime类型是
application/Javascript
,请尝试使用此类型

来源

x-
代表“实验性”并且不再与Javascripts一起使用

所有这些组合都已弃用、过时或过时:

text/x-javascript
text/javascript
application/x-javascript
application/ecmascript
配置中有更多错误的mime类型:

错误:
image/x-icon
右:
image/vnd.microsoft.icon

资料来源:

错误:
application/x-pdf
右:
application/pdf


来源:

您已指定text/x-javascript类型的文件应可缓存,但您是否已告诉Web服务器如何识别此类文件?正如DanFromGermany所说,mimetype确实应该在您的Web服务器中,但这只是一个任意的标签。您的Web服务器可能已经配置为将以
.js
结尾的文件识别为javascript,在这种情况下,只需更改mod_expires块中的相应行即可。您可以在firebug、iehttpheaders、使用wireshark监视连接或从命令行使用wget/curl中看到webserver返回的mimetype


如果您的Web服务器返回的不是
application/javascript
text/x-javascript
,请检查包含apache配置的目录中
mime.types
文件中的条目。

您已指定text/x-javascript类型的文件应可缓存,但是你有没有告诉网络服务器如何识别这些文件?正如DanFromGermany所说,mimetype确实应该在您的Web服务器中,但这只是一个任意的标签。您的Web服务器可能已经配置为将以
.js
结尾的文件识别为javascript,在这种情况下,只需更改mod_expires块中的相应行即可。您可以在firebug、iehttpheaders、使用wireshark监视连接或从命令行使用wget/curl中看到webserver返回的mimetype


如果您的Web服务器返回的不是
application/javascript
text/x-javascript
,请检查包含apache配置的目录中
mime.types
文件中的条目。

检查您的主机配置。 我在使用Cpanel的“超级缓存服务”: 静态缓存 动态缓存 内存缓存

他们正在覆盖my.htaccess设置并导致此问题。
一旦我禁用了它们,问题就消失了。

检查您的主机配置。 我在使用Cpanel的“超级缓存服务”: 静态缓存 动态缓存 内存缓存

他们正在覆盖my.htaccess设置并导致此问题。
一旦我禁用了它们,问题就消失了。

我尝试过这个,但仍然不走运,我在1和1上,它似乎使用了application/x-javascript。我尝试过这个,但仍然不走运,我在1和1上,它似乎使用了application/x-javascript。我尝试过这个,但仍然不走运,我使用的是1和1,它似乎使用了application/x-javascript。1和1托管非常糟糕,但是如果您可以通过htaccess应用更改,这个问题并不是无法解决的。只需更改mod_expires中的行,以匹配Web服务器正在使用的mimetype。它使用的是已经存在的application/x-javascript,因此出于某种原因它仍然无法工作。呃,实际上我们讨论的是text/x-javascript,application/javascript但不是application/x-javascript没有明显的理由说明您的配置可以用于其他文件类型,但不适用于javascript:您可以尝试更改值以确认htaccess文件是否有任何影响,但随后会使用1和1的托管帮助反向工程解决问题?同样,还有其他方法可以使内容可缓存,但您需要为支持支付1和1的费用-让他们提供建议。我尝试过这种方法,但仍然没有成功,我使用了1和1,看起来它使用了application/x-javascript。1和1托管非常糟糕,但是