【问题标题】:How do you set the cache to expire after modification?修改后如何设置缓存过期?
【发布时间】:2012-04-21 03:56:45
【问题描述】:

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

即这行得通吗?

ExpiresDefault "modification"

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

【问题讨论】:

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


    【解决方案1】:

    Expires modify 将缓存设置为在文件最后一次修改后的某个时间过期。即使您的文件在设置的缓存时间限制内再次被修改,已经缓存文件的客户端也不会寻找新版本。 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 -> main2.css)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • Expires 修改本质上与所需要的相反。需要什么来设置“过期”标头以查看缓存文件的上次修改时间
      猜你喜欢
      • 2013-11-20
      • 2011-10-31
      • 2012-05-27
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2016-03-20
      相关资源
      最近更新 更多