缓存策略未根据页面速度更新

时间:2019-10-26 作者:OctaviaLo

我试图通过在中添加一些指令来更新缓存策略。htaccess文件位于我的网站根目录中。虽然我将javascript文件的值更新为1个月,但在使用Google PageSpeed时,它仍然显示以前的缓存值(6小时)。为什么会这样?

<IfModule mod_expires.c>
    ExpiresActive On
        ExpiresByType text/x-javascript "access plus 1 month"
    ExpiresByType text/javascript "access plus 1 month"
    ExpiresByType application/x-javascript "access plus 14 days"
</IfModule>

enter image description here

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 14 days"
为了确定要使用的正确mime类型,您需要查看Content-Type 来自服务器的HTTP响应标头(使用浏览器)。JavaScript文件的默认值为application/javascript - 你根本没有包括在这里。您只需要1个与服务器响应匹配的指令,而不是3或4。(您还声明14 days 以上最后一条指令?)

例如:

ExpiresActive On
ExpiresByType application/javascript "access plus 1 month"
但是,您似乎也在使用外部主机(CDN?)为您的一些JS资源提供服务—这些资源显然不会受到应用程序服务器上的指令的影响。我还注意到,最终的响应来自Nginx服务器(可能是代理服务器)——这也可能控制缓存头。

这个<IfModule mod_expires.c> 除非您打算将代码移植到未安装mod\\u expires的多个服务器,并且这些指令可以失败,否则不需要包装器。

使用Google PageSpeed时,它仍然显示以前的缓存值(6小时)

您应该手动检查HTTP响应头Cache-Control (和Expires) 在浏览器中确定指令是否正常工作。