从RFC2616 HTTP/1.1 Header Field Definitions, 14.9.1 What is Cacheable:
private
Indicates that all or part of the response message is intended for a single
user and MUST NOT be cached by a shared cache. This allows an origin server
to state that the specified parts of the response are intended for only one
user and are not a valid response for requests by other users. A private
(non-shared) cache MAY cache the response.
max-age=0
意味着它可以被高速缓存到0秒。值为零意味着不应执行缓存。
Expires=-1
当存在max-age
时应该忽略,-1是无效日期,应该在过去被解析为一个值(意味着已经过期)。
从RFC2616 HTTP/1.1 Header Field Definitions, 14.21 Expires:
Note: if a response includes a Cache-Control field with the max-age directive
(see section 14.9.3), that directive overrides the Expires field
HTTP/1.1 clients and caches MUST treat other invalid date formats, especially
including the value "0", as in the past (i.e., "already expired").
为persistent connections的Connection: Keep-Alive
和Keep-Alive: timeout=60, max=100
配置设置。除非另有说明,否则使用HTTP/1.1的所有连接都是持久性的,但这些标头会更改实际的超时值,而不是使用浏览器默认值(其变化很大)。
很好的答案。为了使它完成,你能解释为什么max-age = 0为Google设置,而Yahoo和Stackoverflow不设置它?如果未设置max-age,则缓存如何运行? –
Yahoo(se.search.yahoo.com)向我发送'private,max-age = 0,no-cache'。我不知道为什么StackOverflow没有指定max-age,它目前允许浏览器缓存结果页面。在Meta上询问! – sisve