我有一个存储在S3上的文件,让我们说index.html偶尔会改变一次。
我不希望最终客户对其进行缓存,因此我想发送一个http标头max-age=0, no-store, no-cache, must-revalidate
。
据我所知,如果我在S3元数据中设置此标头,Cloudfront将尊重此标头,这意味着Cloudfront将始终为每个请求重新读取该文件。
我不希望Cloudfront这样做,我很高兴在文件发生变化时使Cloudfront无效。
这可能吗?
答案 0 :(得分:3)
如果我在S3元数据中设置此标头,Cloudfront将尊重此标头,这意味着Cloudfront将始终为每个请求重新读取该文件。
这不正确。
当CloudFront中的Minimum TTL
设置为大于max-age
或s-maxage
时,或者原始回复包含no-cache
,no-store
和/中的任何一个时或private
指令,CloudFront仍然存储最小TTL的对象。
这就是为什么它被称为"最小" TTL。 CloudFront假设TTL短于此值的对象(由这些指令指示)仍然应该被缓存 - 只是不超过最小TTL。因此,如果这是一个很大的值,S3的请求数将是最小的。
请参阅Specifying How Long Objects Stay in a CloudFront Edge Cache (Expiration)。