.htaccess:如何"指定缓存验证器"?

Sta*_*bie 23 performance .htaccess pagespeed

我在我的网站上运行Google PageSpeed,它告诉我需要
"指定缓存验证程序".

以下资源缺少缓存验证程序.无法有效刷新未指定缓存验证程序的资源.指定Last-Modified或ETag标头以为以下资源启用缓存验证:

...然后列出图像,CSS,JS等.

根据http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching:

将Last-Modified日期设置为上次更改资源的时间.如果Last-Modified日期在过去足够远,浏览器可能不会重新获取它.

我的.htaccess中有以下内容:

<IfModule mod_headers.c>
    <FilesMatch "\.(bmp|css|flv|gif|ico|jpg|jpeg|js|pdf|png|svg|swf|tif|tiff)$">
        Header set Last-Modified "Tue, 31 Aug 2010 00:00:00 GMT"
    </FilesMatch>
</IfModule>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

aul*_*ron 16

我认为你遇到的问题是,Expire:而不是Last-Modified:.默认情况下,Apache会Last-Modified:根据文件日期发送文件头.我建议删除上面的代码并用以下内容替换它:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 year"
</IfModule>
Run Code Online (Sandbox Code Playgroud)

尝试使用它,如果它不起作用,请尝试添加它:

<IfModule mod_headers.c>
    <FilesMatch "\.(bmp|css|flv|gif|ico|jpg|jpeg|js|pdf|png|svg|swf|tif|tiff)$">
        Header set Last-Modified "Mon, 31 Aug 2009 00:00:00 GMT"
    </FilesMatch>
</IfModule>
Run Code Online (Sandbox Code Playgroud)

  • 感谢这篇有用的帖子,它通过htaccess立即解决了我的问题.令人烦恼的是Page Speed如何列出问题但是你必须研究如何修复它们.对于非技术性的人来说,这可能很难. (2认同)

Chu*_*utt 6

要"设置缓存验证器",您需要在标头中发送以下内容:

Expires 要么 Cache-Control: max-age

Last-Modified 要么 ETag

因此,例如,在PHP中,您可以为CSS和JS文件添加以下内容:

<filesMatch "\.(js|css)$">
    Header set Expires "Thu, 21 May 2013 20:00:00 GMT"
    Header set Last-Modified "Thu, 21 May 2012 20:00:00 GMT"
</filesMatch>
Run Code Online (Sandbox Code Playgroud)

这将满足谷歌的Pagespeed计算器.