If-Modified-Since vs. If-None-Match

Sib*_*Guy 3 http

通常的浏览器条件请求如下所示:

获取/i/yahoo.gif

HTTP/1.1 主机:us.yimg.com

If-Modified-Since: 2006 年 12 月 12 日星期二 03:03:59 GMT

If-None-Match: "10c24bc-4ab-457e1c1f" HTTP/1.1

但是 If-Modified-Since 和 If-None-Match 之间的关系是什么。或者?和?因此,如果其中任何一个“失败”,将发送新版本?

pol*_*ial 6

http://www.ietf.org/rfc/rfc2616.txt

13.3.4 何时使用实体标签和最后修改日期的规则

  • 一个 HTTP/1.1 源服务器,在接收到包含 Last-Modified 日期(例如,在 If-Modified-Since 或 If-Unmodified-Since 头字段中)和一个或多个实体标签(例如,在一个If-Match、If-None-Match 或 If-Range 标头字段)作为缓存验证器,不得返回 304(未修改)的响应状态,除非这样做与请求中的所有条件标头字段一致。

  • HTTP/1.1 缓存代理在接收到包含 Last-Modified 日期和一个或多个实体标签作为缓存验证器的条件请求时,不得向客户端返回本地缓存的响应,除非该缓存的响应与所有请求中的条件标头字段。

    • 注意:这些规则背后的一般原则是 HTTP/1.1 服务器和客户端应该传输尽可能多的非冗余信息,在它们的响应和请求中可用。接收此信息的 HTTP/1.1 系统将对它们接收的验证器做出最保守的假设。