2

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

即这会工作吗?

ExpiresDefault "modification"

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

4

2 回答 2

2

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

这是一个例子:

#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 -> main2.css)

于 2012-04-21T20:43:24.023 回答
0

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

于 2012-04-21T14:13:06.247 回答