Google Page Speed利用浏览器缓存未标记为已解决

时间:2015-07-29 08:59:08

标签: .htaccess caching apache2 browser-cache google-pagespeed

我几乎没有警告我要在pagespeed测试中解决,例如:

  

利用浏览器缓存
  在静态资源的HTTP标头中设置到期日期或最长期限,指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。

然后它指出本地的.js和.css文件

但我在我的htaccess中有这个:

<FilesMatch "\.(js|css|ttf)$">
    Header set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
    Header set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\.(html|htm|php)$">
    Header set Cache-Control "max-age=60, private, proxy-revalidate"
</FilesMatch>
<FilesMatch "\.(css|js|gif|jpeg|png|ico)$">
ExpiresActive On
ExpiresDefault "access plus 1 year"
</FilesMatch>

知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

嗯,这是一个黑暗中的镜头,但我遇到了Apache不尊重我的.htaccess标题的情况,我不得不用always关键字强制它们:

<FilesMatch "\.(js|css|ttf)$">
    Header always set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
    Header always set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\.(html|htm|php)$">
    Header always set Cache-Control "max-age=60, private, proxy-revalidate"
</FilesMatch>
<FilesMatch "\.(css|js|gif|jpeg|png|ico)$">
    ExpiresActive On
    ExpiresDefault "access plus 1 year"
</FilesMatch>
  

当您的操作是现有标头的函数时,您可能需要指定始终的条件,具体取决于设置原始标头的内部表。始终对应的表用于本地生成的错误响应以及成功的回应。另请注意,在某些情况下重复使用这两个条件的指令是有意义的,因为对于现有标题,始终不是onsuccess的超集:

     
      
  • 您正在为本地生成的非成功(非2xx)响应添加标头,例如重定向,在这种情况下,只会在最终响应中使用与always相对应的表。
  •   
  • 您正在修改或删除由CGI脚本生成的标头,在这种情况下,CGI脚本位于表中,始终对应于默认表,而不是默认表。
  •   
  • 您正在修改或删除某些服务器生成的标头,但默认的onsuccess条件未找到该标头。
  •   

来自Apache Module mod_headers