三个.htaccess到期规则之间的差异

时间:2010-09-18 08:41:14

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

以下三个.htaccess规则之间的区别是什么以及何时使用每个规则,是否有任何特殊用例更喜欢其中一个?:

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

2 个答案:

答案 0 :(得分:7)

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。计算新鲜度寿命

     

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

     
      
  • ...

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

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

  •   
  • ...

  •   

但如果两者都存在,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字段的收件人。

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

在这种情况下,第三个指令将默认新鲜度生命周期设置为自响应时起10年。

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

答案 1 :(得分:3)

第一条规则向Cache-Control添加max-age条目。浏览器必须在此处给出的时间后以秒为单位重新获取文档。

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

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

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

进一步阅读:

  

10个网站通过使用“01 jan 0001”的到期权威地声明它们已过期(并且可能是木乃伊)。