我正在使用Amazon S3为我的网站提供静态资产。我想让浏览器尽可能长时间地缓存这些资产。我应该在资产中包含哪些元数据标头
Cache-Control: max-age=???
Answers:
考虑不要将其“尽可能长时间地”存储,而应尽可能合理地解决。例如,您不太可能需要将其缓存超过10年……对吗?
RFC在此处讨论最大年龄:http: //www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3
埃里克·劳伦斯(Eric Lawrence)说,在IE9之前,Internet Explorer会将具有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年后突然加载新版本会对访问者有什么好处?从功能的角度来看,如果文件的TTL为1年,则显然意味着根本不打算更改该文件。
那么为什么一个人需要超过一年呢?
1)为什么不呢?告知访问者浏览器“没有任何目的”,“此文件已使用1年,请先检查一下是否已更新”。
2)CDN服务。大多数内容交付网络都使用缓存头来确定从边缘服务器有效地提供文件服务的时间。如果您对文件具有1年的缓存控制,它将在某个时候开始从原始服务器重新请求未更改的文件,并且边缘缓存将需要完全重新填充,这会导致客户端加载速度变慢,并且不必要调用原点。
最多拥有1年的意义是什么?哪些浏览器会阻塞高于31536000的数量?