If-Modified-Since与If-None-Match

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

GET /i/yahoo.gif

HTTP / 1.1主机:us.yimg.com

If-Modified-Since:星期二,12十二月2006 03:03:59 GMT

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

但If-Modified-Since和If-None-Match之间的关系如何? 要么? 和? 所以如果他们中的任何一个“失败”,一个新的版本将被发送?

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

13.3.4何时使用实体标签和上次修改date的规则

  • HTTP / 1.1源服务器在接收到包括最后修改date(例如,在If-Modified-Since或If-Unmodified-Since首标字段中)和一个或多个实体标签(例如,在If-Match,If-None-Match或If-Range头字段)作为高速caching校验器时,绝不能返回304(未修改)的响应状态,除非这样做与请求中的所有条件头字段一致。

  • HTTP / 1.1caching代理在接收到包含Last-Modifieddate和一个或多个实体标签作为cachingvalidation器的条件请求时,务必不将本地caching的响应返回给客户端,除非该caching的响应与所有请求中的条件标头字段。

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