我在S3存储桶上有数百万个图像文件,我知道它们永远不会改变。 为了优化请求,我决定在文件中添加一个expires标头(如下所述:google page speed rules)
将标题添加到我的所有文件的过程是漫长而昂贵的,所以我不想重复它。但是,Http Rfc建议将Expires标头设置为未来一年的最大到期日期:
HTTP/1.1 servers SHOULD NOT send Expires dates more than one year in the future
...这意味着我必须在一年内更新我的标题。
我的问题是:
我可以将标头值设置为非常远的日期(例如:01-01-2020)并违反RFC建议吗?这样做有什么风险?
是否有其他解决方案告诉客户请求我的文件无限期地缓存它们,而不必更新我的亚马逊S3存储上的任何内容?
答案 0 :(得分:11)
您还可以设置更现代的标题:
Cache-Control: max-age=31536000, public
每个用户代理在加载每个图像后,都愿意在要求新副本之前将其缓存一整年。 (大整数有365×24×60×60秒。)如果还有不了解Cache-Control的浏览器,它们可能会在图像的整个生命周期内逐渐消失!
答案 1 :(得分:1)
您可以将标题值设置为2038年1月19日左右(最大32位时间戳)。 这就是谷歌在一段时间内对跟踪cookie到期时间所做的事情。
这样做的唯一风险是,如果一天,由于某种原因,您决定更改图像(或注意一个或多个图像有问题),您的客户将无法下载新版本。你决定是否值得承担风险。
除此之外,我没有看到任何潜在的问题。