htaccess'Header unset Last-Modified'缓存问题

时间:2010-03-30 16:04:44

标签: .htaccess caching last-modified

我试图在我的htaccess文件中设置一些缓存控制选项。

目前它看起来像这样:

<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf|css|js|html|pdf)$">
Header set Cache-Control "max-age=2592000, public, must-revalidate"
Header unset ETag
FileETag None
</FilesMatch>

但是我读到了(并且想要添加)Header未设置Last-Modified,所以它会是这样的:

<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf|css|js|html|pdf)$">
Header set Cache-Control "max-age=2592000, public, must-revalidate"
Header unset Last-Modified
Header unset ETag
FileETag None
</FilesMatch>

然而,使用它(根据Firebug)根本不会从缓存中加载任何东西(而第一种技术加载所有东西)

我做错了吗?语法似乎是正确的。

一个。

2 个答案:

答案 0 :(得分:4)

语法正确,但用法不正确。 根据此处的“速度提示:删除最后修改的标题”:http://www.askapache.com/htaccess/apache-speed-last-modified.html

  

如果删除Last-Modified和ETag标头,您将完全消除If-Modified-Since和If-None-Match请求及其304 Not Modified Responses,因此文件将保持缓存而不检查更新,直到Expires标题表示新内容可用!

此外:

  

通过从静态文件(图像,javascript,css)中删除ETag标头和Last-Modified标头,浏览器和缓存将无法验证文件的缓存版本与真实版本。通过还包括一个Cache-Control标头和Expires标头,您可以指定某些文件被缓存一段时间,并且您神奇地(这是我承诺的一个非常独特的技巧)消除任何验证请求!!

有关详细信息,请参阅原始链接。

答案 1 :(得分:0)

One use case for removing Last-Modified would be if a resource uses the new cache-control: immutable directive which instructs caches that the resource will never change (e.g. when controlling file versions with hashes). Micro optimizations...