我试图在我的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)根本不会从缓存中加载任何东西(而第一种技术加载所有东西)
我做错了吗?语法似乎是正确的。
一个。
答案 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...