使用Last-Modified标头使已存储的响应无效

时间:2016-05-23 16:24:23

标签: http http-headers last-modified http2

Section 4 of RFC 7234有这一段:

  

当存储多个合适的响应时,缓存必须使用      最近的响应(由Date标头字段确定)。它      也可以使用" Cache-Control转发请求:max-age = 0"要么      "缓存控制:无缓存"消除使用哪种回应的歧义。

它提到了使用DateCache-Control标头使已存储的回复无效。

关于Last-Modified标题的内容是什么?我可以将它用于同一目的吗?

1 个答案:

答案 0 :(得分:1)

Last-Modified充当验证者。这些在前面引用的部分中提到过:

  

当提出请求时,缓存不得重用存储的响应,除非存储的响应是:...

     
      
  • fresh(参见第4.2节)或
  •   
  • 允许陈旧(见第4.2.4节)或
  •   
  • 成功验证(参见第4.3节)。
  •   

Section 4.3详细解释了验证。我认为4.3.2对你有意义:

  

[A]包含If-Modified-Since标头字段的请求表示客户端希望按修改日期验证其自己存储的一个或多个响应。如果下列情况之一成立,缓存收件人应该生成304(未修改)响应(使用所选存储响应的元数据):

     
      
  1. 所选的存储响应的字段值为Last-Modified   早于或等于条件时间戳;
  2.   
  3. 所选存储的响应中没有Last-Modified字段,但它的Date字段值早于或等于条件时间戳;或者,
  4.   
  5. 所选存储的响应中既不存在Last-Modified也不Date,但缓存将其记录为早于或等于条件时间戳的时间。
  6.   

所以是的,这完全符合RFC的要求。由于Last-Modified / If-Modified-Since是一种非常古老的机制,早在HTTP / 1.0中就已经引入,因此您可以期望缓存符合规定。