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

Omr*_*nic 10 apache .htaccess http-caching http-headers

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

Header set Cache-Control "max-age=290304000"
Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT"
ExpiresDefault "access plus 10 years"
Run Code Online (Sandbox Code Playgroud)

Gum*_*mbo 7

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

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

与此相反,第二指令可将报头字段过期与值Thu, 15 Apr 2020 20:00:00 GMT描述与绝对时间值的新鲜度的寿命.

两个缓存控制最大年龄值和过期失效时间戳可以转化为其他:

4.2.1.计算新鲜度寿命

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

  • ...

  • 如果存在max-age响应指令(第5.2.2.8节),请使用其值或

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

  • ...

但如果两者都存在,则Cache-Controlmax-age优先于Expires:

如果响应包含带有max-age指令的Cache-Control字段(第5.2.2.8节),则收件人必须忽略Expires字段.同样,如果响应包含s-maxage指令(第5.2.2.9节),则共享缓存接收方必须忽略Expires字段.在这两种情况下,Expires中的值仅适用于尚未实现Cache-Control字段的收件人.

mod_expires ExpiresDefault指令不是手动设置这些HTTP缓存控制头字段,而是允许轻松设置HTTP缓存.新鲜度寿命可以用绝对值或相对值来描述,相对于响应时间(即access/ now)或相对于所请求文件的修改时间(即modification).它使用Cache-ControlExpires.

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

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