【问题标题】:Difference between three .htaccess expire rules三个 .htaccess 过期规则之间的区别
【发布时间】:2011-04-14 01:07:43
【问题描述】:

以下三个 .htaccess 规则有什么区别以及何时使用每一个,是否有任何特殊用例优先于另一个?:

Header set Cache-Control "max-age=290304000"
Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT"
ExpiresDefault "access plus 10 years"

【问题讨论】:

    标签: apache .htaccess http-headers http-caching


    【解决方案1】:

    第一条规则将一个 max-age 条目添加到 Cache-Control。浏览器必须在此处给出的秒数后重新获取文档。

    第二条和第三条规则创建过期标头。浏览器必须在此处给出的日期重新获取文档。并且服务器必须进行一些计算。

    请注意,第二条规则会强制同时刷新所有浏览器和所有资源,而第三条也是最后一条规则会根据请求时间使浏览器缓存失效。如果您有一个流量很大的网站,您会看到不同之处:您可能会在 2020 年 4 月 15 日达到一个戏剧性的高峰。:)

    根据经验:使用 max-age。 非常适合 good supported,您没有机会创建无效日期。此外,它更短。

    延伸阅读:

    10 个 URL 使用“01 jan 0001”的过期时间,权威地声明它们已过期(并且可能已被木乃伊化)。

    【讨论】:

      【解决方案2】:

      Headermod_headers 的指令,允许修改 HTTP 标头字段。在这种情况下,Header set 有效地设置了提到的头字段Cache-ControlExpires,因此已经存在的头字段将被覆盖。

      第一个指令将标头字段 Cache-Control 设置为值 max-age=290304000,将新鲜生命周期描述为相对于响应时间为 290304000 秒。

      与此相反,第二个指令将标头字段 Expires 设置为值 Thu, 15 Apr 2020 20:00:00 GMT,以绝对时间值描述新鲜度生命周期。

      Cache-Control’s max-age value and Expires expiration time stamp can be transformed to the other:

      4.2.1。计算保鲜期

      缓存可以计算新鲜度生命周期(表示为 Freshness_lifetime) 使用第一个匹配的响应 以下:

      • ...

      • 如果存在 max-age 响应指令 (Section 5.2.2.8), 使用它的值,或者

      • 如果 Expires 响应标头字段 (Section 5.3) 存在,请使用 它的值减去日期响应头字段的值,或

      • ...

      但如果两者都存在,Cache-Control’s max-age is preferred over Expires:

      如果响应包含具有 max-age 的 Cache-Control 字段 指令 (Section 5.2.2.8),收件人必须忽略 Expires 场地。同样,如果响应包含 s-maxage 指令 (Section 5.2.2.9),共享缓存接收者必须忽略 Expires 场地。在这两种情况下,Expires 中的值仅用于 对于尚未实现 Cache-Control 字段的收件人。

      mod_expires ExpiresDefault directive 无需手动设置这些 HTTP 缓存控制标头字段,而是允许轻松设置 HTTP 缓存。新鲜生命周期可以用绝对值或相对值来描述,相对于响应时间(即access/now)或相对于请求文件的修改时间(即modification)。它同时使用 Cache-ControlExpires

      在这种情况下,第三个指令将默认的新鲜寿命设置为从响应之日起 10 年。

      我会使用 mod_expires 进行 HTTP 缓存控制,而不是使用 Header 手动进行。它更方便,允许相对和绝对新鲜时间,并同时使用 Cache-ControlExpires

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-01
        • 2019-05-23
        • 1970-01-01
        相关资源
        最近更新 更多