The usual browser conditional request looks like this:
GET /i/yahoo.gif
HTTP/1.1 Host: us.yimg.com
If-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT
If-None-Match: "10c24bc-4ab-457e1c1f" HTTP/1.1
But what is the relation between If-Modified-Since and If-None-Match. OR? AND? So if any of them "fails", a new version will be sent?
Best Answer
http://www.ietf.org/rfc/rfc2616.txt
13.3.4 Rules for When to Use Entity Tags and Last-Modified Dates
An HTTP/1.1 origin server, upon receiving a conditional request that includes both a Last-Modified date (e.g., in an If-Modified-Since or If-Unmodified-Since header field) and one or more entity tags (e.g., in an If-Match, If-None-Match, or If-Range header field) as cache validators, MUST NOT return a response status of 304 (Not Modified) unless doing so is consistent with all of the conditional header fields in the request.
An HTTP/1.1 caching proxy, upon receiving a conditional request that includes both a Last-Modified date and one or more entity tags as cache validators, MUST NOT return a locally cached response to the client unless that cached response is consistent with all of the conditional header fields in the request.