5

我将带有到期标头的资产放入 S3,这些标头已成功传递到 CloudFront 分配。但是,过期后的请求不会导致 CloudFront 从源服务器请求新文件。

我还发现查询字符串版本令牌不会强制使用新资产,并且我不想使用完整的文件名版本控制。

所有这一切都可能归因于我对缓存控制标头的了解不足,但我开始怀疑我是否遗漏了有关 CloudFront 应该如何工作的关键信息。CloudFront 响应显示如下标头。

Cache-Control: max-age=120
Expires: Tue, 07 Apr 2009 12:13:26 GMT
4

3 回答 3

9

时间流逝,事情发生了变化。正如蒂姆所指出的,最短的缓存时间是 24 小时,但在 2010 年 4 月,亚马逊宣布他们将识别并遵循将缓存缩短至一小时的指令。

此处公告:http: //developer.amazonwebservices.com/connect/ann.jspa ?annID=655

于 2010-06-27T01:05:19.163 回答
4

看起来亚马逊忽略了不到 24 小时的到期时间。 http://developer.amazonwebservices.com/connect/thread.jspa?messageID=107699꒳

于 2009-04-07T14:55:17.457 回答
0

正如 Matchu 在评论中所指出的,如果您愿意,您现在可以将到期时间一直设置为零,这对于开发和测试服务器来说非常好!

http://aws.amazon.com/about-aws/whats-new/2012/03/19/amazon-cloudfront-lowers-minimum-expiration-period/

最小 TTL 值可能短至 0 秒。然后,您可以通过在源文件中设置缓存控制标头来为每个文件设置 TTL。

另请注意亚马逊文档所说的内容

在 Expires 标头中的到期日期和时间过去后,每次边缘站点收到对象请求时,CloudFront 都会再次从源服务器获取对象。

我们建议您使用 Cache-Control max-age 指令而不是 Expires 标头字段来控制对象缓存。如果您同时为 Cache-Control max-age 和 Expires 指定值,CloudFront 仅使用 max-age 的值。

于 2013-10-07T15:55:24.087 回答