【问题标题】:htaccess 'Header unset Last-Modified' caching issuehtaccess 'Header unset Last-Modified' 缓存问题
【发布时间】:2011-02-02 13:17:14
【问题描述】:

我正在尝试在我的 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>

但是我读到(并想添加)标题未设置 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)根本不会从缓存中加载任何内容(而第一种技术会加载所有内容)

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

一个。

【问题讨论】:

    标签: .htaccess caching last-modified


    【解决方案1】:

    语法正确,但用法不正确。 根据此处找到的“速度提示:删除 Last-Modified Header”:http://www.askapache.com/htaccess/apache-speed-last-modified.html

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

    还有:

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

    更多详情请参考原文链接。

    【讨论】:

    • Expires 标头只是表示内容已过期,并不意味着内容实际上已被修改。通过删除 Last-Modified 标头,即使已提供 304 响应,您也会强制缓存重新请求文件。
    【解决方案2】:

    删除Last-Modified 的一个用例是,如果资源使用新的cache-control: immutable 指令,该指令指示缓存资源永远不会更改(例如,当使用散列控制文件版本时)。微优化...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 2010-11-22
      • 2011-04-28
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多