我正在我的网站上运行Google PagesPeed,这告诉我我需要
“指定缓存验证器。”

以下资源缺少缓存验证器。不能有效地刷新未指定缓存验证器的资源。指定最后修改或ETAG标头以启用以下资源的缓存验证:

…然后列出图像,CSS,JS等。

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

将最后修改的日期设置为最后一次更改资源的时间。如果过去的最后修饰日期足够远,那么浏览器的可能性就不会拆除。

我的.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>

我究竟做错了什么?

答案

我认为你的问题是Expire:并且不与Last-Modified:。默认情况下,Apache会发送文件Last-Modified:基于文件日期的标题。我建议删除上层代码并用以下内容替换:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 year"
</IfModule>

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

<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>

来自: stackoverflow.com