回答
通常建议一年为标准最大值。见RFC 2616:
为了纪念一个响应为“永不过期”,源服务器发送一个 到期日期的大约一年,从回应是 发送的时间。 HTTP/1.1服务器不应该在将来发送超过一个 年的过期日期。
虽然适用于旧expires
标准,是有意义的申请cache-control
太在没有任何明确的标准指导。无论如何,只要您通常需要,随意选择任意长度的值可能会破坏某些用户代理。所以:
Cache-Control: max-age=31536000
哪些元数据报头考虑的不是将其存储为“只要有可能,”而是沉淀,只要是合理的。例如,你不太可能需要将它缓存超过10年的时间......我是对的吗?
的RFC这里讨论的max-age:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3
埃里克·劳伦斯说,之前IE9,IE浏览器会当作过时的任何资源具有的Cache-Control:max-age的值超过2147483648(2^31)秒,大约68年(http://blogs.msdn.com/b/ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx)。
其他用户代理当然会有所不同,所以...尝试选择一个不太可能(而不是可能!)的数字来引起溢出。最大年龄大于31536000(一年)没有意义,非正式地说这被认为是合理的最大值。
谁创造最大1年缓存的建议,没想到它通过适当的人。
首先,如果访问者正在服务过期的缓存文件,那么为什么它会提供任何好处让它在1年后突然加载新版本?如果一个文件有1年的TTL,从功能的角度来看,这显然意味着文件根本不打算被改变。
那么为什么会需要超过1年?
1)为什么不呢?它没有任何目的告诉访问者浏览器“嘿,这个文件是1岁,这可能是一个想法,检查它是否已被更新”。
2)CDN服务。大多数内容交付网络使用缓存头来决定从边缘服务器有效提供文件的时间。如果您对这些文件拥有1年的缓存控制权,它将在某个时刻开始重新向源服务器请求未更改的文件,并且边缘缓存需要完全重新填充,导致客户端的负载更慢,并且不必要呼叫原点。
最长1年的要点是什么?哪些浏览器在设置的金额高于31536000时会窒息?
1年是互联网时代的永恒。另外,如果你需要缓存认真你会处理(除高速缓存控制)的最后一次修改和/或ETAG机制。因此即使是一年后的重新请求也不会损害带宽(304未修改) – redben
1年不是永恒的,当你的图像永远不会改变(像互联网上的大多数图像),并且当你不想要一个CDN从原点刷新文件(这是毫无意义的)。至于最后修改的/ etag,当然这会启动客户端和服务器之间的请求和对话,只是为了找出我们已经知道的“yup,它仍然可以提供缓存的文件”。你的论点基本上是“1年是互联网上的永恒”,它不会提供任何有用的东西。我已经在图像上设置了10年到期,这只是一个更好的最终结果。 – suncat100
哦,还有默认的浏览器缓存大小。任何缓存的资产是否会在浏览器缓存中存活一年?我不知道。 – redben
- 1. 缓存控制http头
- 2. HTTP缓存控制,我怎么缓存控制:最大年龄= 0头从服务器返回的?
- 3. HTTP缓存:缓存控制
- 4. ASP.NET MVC:OutputCache和http头 - 缓存控制
- 5. 在WCF服务中设置HTTP缓存控制标头
- 6. HTTP缓存控制
- 7. 缓存控制头
- 8. 设置ASP.NET缓存控制标头
- 9. Cloudfront缓存控制标头丢失
- 10. HTTP缓存头
- 11. 如何发送缓存控制:HTTP响应头中的no-cache?
- 12. 缓存控制:最大年龄设置
- 13. 使Nginx缓存尊重缓存控制标头
- 14. 在PHP中使用HTTP头进行缓存控制
- 15. HTTP头:控制缓存和历史机制
- 16. ImageResizer返回专用缓存控制标头值
- 17. 缓存控制最大年龄元标记不注册
- 18. GAE的appspot.com缓存控制头 - HTTP状态304
- 19. HTTP请求标头和缓存
- 20. 访问控制最大年龄与缓存控制
- 21. 的Rails 3.2机架::缓存HTTP标头和动作缓存
- 22. Firefox Live HTTP标头,缓存控制后的曲线花括号:no-cache
- 23. CloudFront的图像缓存控制头
- 24. HTTP 404未找到响应与Set-Cookie指令包含缓存控制标头
- 25. 缓存控制响应头不强制浏览器缓存
- 26. expire标题和缓存控制与mod标头
- 27. 缓存控制HTML标题
- 28. 如何从PHP中的cUrl获取缓存控制最大年龄值?
- 29. 替代HTTP的当量=“编译”和http-当量=“缓存控制”元标记中
- 30. HTTP缓存和ETag头
可能max-age的值是依赖于浏览器/版本,并在任何方式代理... AFAIK没有真正的标准/规范,这样任何值将是一个猜测... – Yahia