AWS CloudFront默认缓存行为允许自定义Min TTL,Max TTL和Default TTL值。我反复浏览了文档,但无法理解Default TTL和Maximum TTL之间的实际区别。例如,如果我在默认TTL中给出24小时(以秒为单位),那么在Max TTL中应用的不同持续时间会发生什么?
答案 0 :(得分:8)
从我所看到的:
例如,如果应用程序通过标头将缓存持续时间设置为90分钟,但最大TTL设置为60分钟,则CloudFront将缓存60分钟。
请参阅文档: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。