javascript - 为什么 Leverage 浏览器缓存不适用于 Javascript?

标签 javascript caching pagespeed google-pagespeed

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

然后它列出了我的内部 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>

谢谢

最佳答案

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

如果您的网络服务器返回 application/javascripttext/x-javascript 以外的内容,请检查 mime.types 中的条目> 包含 apache 配置的目录中的文件。

关于javascript - 为什么 Leverage 浏览器缓存不适用于 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37590632/

相关文章:

javascript - 如何使用 Dropbox Core API 获取修订后的文本文件的内容详细信息?

java - Apache Ignite 中的过期策略

javascript - CSS/JS 未加载。 CSS/JS 损坏

javascript - 德鲁帕尔 |缓存页面中未缓存的 JS cookie/跟踪代码算法

seo - 延迟加载 img src 会对 SEO 产生负面影响

pagespeed - serf 失败,将 https 请求发送到端口 80 而不是 443,为什么?

google-analytics - domInteractive 与 Time to Interactive - 有什么区别?

javascript - 对比编辑后$resource结果修改情况

javascript - 如何从 Angular 8 中的其他组件打开引导模式窗口?

javascript - 正确使用 jquery 动画吗?