如何将缓存设置为在修改后过期?

时间:2012-04-21 03:56:45

标签: .htaccess browser-cache cache-control last-modified mod-expires

我正在使用.htaccess文件来设置网站的标题。我想知道如何在对文件缓存进行修改后将文件缓存设置为过期。这可能吗?

即。这有用吗?

ExpiresDefault "modification"

换句话说,我希望缓存保持不变,直到从服务器修改文件为止。

2 个答案:

答案 0 :(得分:2)

过期修改将缓存设置为在最后一次修改文件后的某个时间到期。即使您的文件在设置的缓存时间限制内再次被修改,已经缓存该文件的客户端也不会查找新版本。 Apache Expiration包含有关过期模块的信息。

以下是一个例子:

#BEGIN Cache-Control Headers
<ifModule mod_headers.c>
   <filesMatch "\.(css|js)$">
      ExpiresDefault "modification plus 4 weeks"
  </filesMatch>
</ifModule>
# END Cache-Control Headers

如果您的css文件在1周前被修改,则缓存将在3周内过期而不是4周。

那么如何在文件缓存后显示新修改的css文件?

如果您修改了css文件,则更改将显示在缓存的浏览器中,直到缓存过期。解决此问题的一种方法是更改​​缓存的css文件的名称。 (示例重命名为main1.css - &gt; main2.css)

答案 1 :(得分:0)

我认为你对expires标题有错误的想法。 expires头告诉接收者它可以在本地缓存文件多长时间。在此期间之后,接收方必须重新请求资源。如果服务器说资源将在一小时后过期,但资源会在一分钟后更改。这将需要另外59分钟,直到接收器将获取此修改版本。服务器无法通知接收方资源过早过期。