我试图理解这种奇怪的行为 我在CloudFront上有一个Web分发列表,它从S3获取文件 我已经在CF中设置了
Minimum TTL: max-age=15
我可以在curl
的页眉中看到最大年龄值Content-Type: text/html Content-Length: 851 Connection: keep-alive Date: Thu, 16 Nov 2017 16:48:08 GMT Last-Modified: Thu, 16 Nov 2017 16:48:01 GMT ETag: "6f05a132c76b8e482f8f72f3cd2aa2b1" Cache-Control: max-age=15 Accept-Ranges: bytes Server: AmazonS3 X-Cache: RefreshHit from cloudfront Via: 1.1 dba4881aee9ac99f5dba4dcd7e8175b1.cloudfront.net (CloudFront) X-Amz-Cf-Id: 8Cwu-1UPFb2BL03mvu3exf17UzWqCZVrUGvNtc2xCeVg47G1UnqVjg==
一旦我上传了包含我的更改的新html页面,如果我卷曲资源,我可以看到页面已更改。 如果我使用Firefox / Chrome打开页面,页面不会更改,并且不会遵守max-age值,因为标题中的年龄值大约为32000
date : Thu, 16 Nov 2017 17:23:41 GMT etag :"8ad74acb5563f12bfd239683a3d96d75" cache-control:15 server :AmazonS3 age :31029 x-cache :Hit from cloudfront via :1.1 1d3fdb2bba223d815ff2e40453…8.cloudfront.net (CloudFront) x-amz-cf-id :ooeDeSw-_ZpMDR25_yN9VhfyJF2FeAgiklzE5QZusNRs_glDqobgcg==
我错过了什么,或者我没有考虑过?
答案 0 :(得分:1)
如果S3中的对象已经缓存,那么在S3中更改对象并不会将其推送到CloudFront,因为这是...从您发出请求之前的31029秒开始。
age :31029
要从CloudFront缓存中逐出对象(强制CloudFront在下次请求对象时从原点发出新请求)需要invalidation。
另请注意,最小TTL没有实际意义,因为这是CloudFront在最初缓存对象时将会尊重的最小 max-age
或s-maxage
。当对象的最大生命周期小于最小生命周期时,它只会执行任何操作,并且一旦对象被缓存,它很可能没有任何后果。