为了驯服“条件获取”野兽,这篇博文帮助了我很多。
一段有趣的摘录(与本的回答部分矛盾)指出:
如果正常响应包含 ETag 标头,则该标头也必须包含在 304 响应中。
缓存标头(Expires、Cache-Control 和/或 Vary),如果它们的值可能与先前响应中发送的值不同。
这完全符合RFC 2616 sec 10.3.5。
低于 200 个请求...
HTTP/1.1 200 OK
Server: nginx/0.8.52
Date: Thu, 18 Nov 2010 16:04:38 GMT
Content-Type: image/png
Last-Modified: Thu, 15 Oct 2009 02:04:11 GMT
Expires: Thu, 31 Dec 2010 02:04:11 GMT
Cache-Control: max-age=315360000
Accept-Ranges: bytes
Content-Length: 6394
Via: 1.1 proxyIR.my.corporate.proxy.name:8080 (IronPort-WSA/6.3.3-015)
Connection: keep-alive
Proxy-Connection: keep-alive
X-Junk: xxxxxxxxxxxxxxxx
...以及它的最佳有效 304 对应物。
HTTP/1.1 304 Not Modified
Server: nginx/0.8.52
Date: Thu, 18 Nov 2010 16:10:35 GMT
Expires: Thu, 31 Dec 2011 16:10:35 GMT
Cache-Control: max-age=315360000
Via: 1.1 proxyIR.my.corporate.proxy.name:8080 (IronPort-WSA/6.3.3-015)
Connection: keep-alive
Proxy-Connection: keep-alive
X-Junk: xxxxxxxxxxx
请注意,Expires
标头最多Current Date + One Year
符合RFC-2616 14.21。