有人可以澄清有关缓存的声明。
https://developers.google.com/speed/docs/best-practices/caching说
指定
Expires
和Cache-Control: max-age
,或指定Last-Modified
和ETag
都是多余的。
然后它说
指纹识别机制允许服务器将
Expires
标题设置为在请求日期之前一年;Last-Modified
标题到上次修改文件的日期;以及Cache-Control: max-age
标题为3153600
。
后一种说法与先前的说法相反 - 关于不设置Expires
和Cache-Control
。
第一个陈述是常态,第二个是异常吗?或者这个文档是否违背了自己的建议?有什么建议吗?
感谢。
答案 0 :(得分:12)
如果同时使用它们,[Cache-Control]具有优先权。 您可以在此处找到更多信息: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3
答案 1 :(得分:2)
嗯...
我可以告诉你,第一个语句是正确的,因为你真的不需要指定[Expires] 和 [Max-Age]标题,因为它们都做同样的事情(设置最长缓存时间)
同样适用于[Last Modify]和[Etag],因为两者都是新鲜度。
我同意似乎存在一些混淆,因为他们稍后给出的示例使用[Expires]和[Max-Age]标题。
乍一看,这看起来像某种文档错误。
仍然,你需要记住,虽然你没有 同时使用[Expires]和[Max-Age],你肯定可以同时使用它们,只要他们指向同一个日期 - 就像他们提供的例子一样。
总结:
第一个陈述谈论冗余(这不是必要的“坏”,可能“只是”浪费)。他们稍后给出的示例虽然没有经过优化,但不会引起任何问题。
只要您没有使用两个标题设置不同的到期日期,您就可以了。