AWS CloudFront最大TTL和默认TTL缓存行为的差异

时间:2017-02-12 01:35:52

标签: amazon-web-services amazon-cloudfront

AWS CloudFront默认缓存行为允许自定义Min TTL,Max TTL和Default TTL值。我反复浏览了文档,但无法理解Default TTL和Maximum TTL之间的实际区别。例如,如果我在默认TTL中给出24小时(以秒为单位),那么在Max TTL中应用的不同持续时间会发生什么?

3 个答案:

答案 0 :(得分:8)

从我所看到的:

  • 默认在缓存控制标头未提供缓存持续时间时使用
  • 最大可以通过强制执行更短的缓存持续时间来覆盖缓存控制标头

例如,如果应用程序通过标头将缓存持续时间设置为90分钟,但最大TTL设置为60分钟,则CloudFront将缓存6​​0分钟。

请参阅文档:Specifying How Long Objects Stay in a CloudFront Edge Cache (Expiration)

答案 1 :(得分:0)

是的,只是为了加入@John Rotenstein的回答:

最小TTL 最大TTL 只需设置Cloudfront允许请求标头更改TTL的范围。如果没有传递标题,则将使用默认TTL。

您可以在此处查看每个的定义: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesMinTTL

实际上,我们发现如果没有传递,默认TTL并不总是被设置。因此,最好发送Control max-age(或Expires)或Cache-Control s-maxage标头,以确保在正确的时间内缓存对象。或者您可以将Min TTL和默认TTL设置为同一时间。

要记住的另一件事(来自docs):

  

如果您将CloudFront配置为将所有标头转发到您的源   如果是缓存行为,CloudFront永远不会缓存关联的对象。

答案 2 :(得分:0)

<块引用>

默认缓存 TTL: 将在请求中没有标头时应用。通常我们这样做。这是 24 小时,我们可以根据需要进行自定义。 如果默认 TTL 为 24 小时:在 CloudFront 将另一个请求转发到您的源以确定对象是否已更新之前,对象在 CloudFront 缓存中保留的 24 小时。

<块引用>

最大和最小缓存 TTL: 当请求(访问对象)带有缓存头(Cache-Control max-age、Cache-Control s-maxage 或 Expires)时,它将被应用)。如果请求标头的 Expires 大于 max-TTL,那么这些就像边界值,然后将该对象过期视为 max-TTL。如果任何对象请求标头的 Expires 小于 min-TTL,则将该过期视为 min-TTL。