【发布时间】:2011-08-18 15:16:30
【问题描述】:
我在 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 存储上的任何内容?
【问题讨论】:
-
嗯,这是应该的。如果服务器不服从任何应该,它充其量是有条件地兼容,而不是无条件地兼容 w.r.t。 HTTP 1.1(RFC 2616,第 1.2 节)。所以技术上没问题。我不知道 S3 是如何工作的,但你不能只发送一个 $(NOW + 1 year) 的日期而不是一个固定的日期吗?
-
如果这就是您的意思,当客户端在 S3 上发出请求时,无法动态设置标头。所有标头都有“静态”值,并且更新它们需要为每个(实际上是 CopyObjectRequest)提出一个亚马逊 PUT 请求,当您的存储桶中已经存储了数百万个文件时,这很痛苦。