发送"缓存控制:无缓存"来自cloudfront

时间:2018-03-03 13:06:32

标签: amazon-s3 amazon-cloudfront cache-control

我有一个存储在S3上的文件,让我们说index.html偶尔会改变一次。

我不希望最终客户对其进行缓存,因此我想发送一个http标头max-age=0, no-store, no-cache, must-revalidate

据我所知,如果我在S3元数据中设置此标头,Cloudfront将尊重此标头,这意味着Cloudfront将始终为每个请求重新读取该文件。

我不希望Cloudfront这样做,我很高兴在文件发生变化时使Cloudfront无效。

这可能吗?

1 个答案:

答案 0 :(得分:3)

  

如果我在S3元数据中设置此标头,Cloudfront将尊重此标头,这意味着Cloudfront将始终为每个请求重新读取该文件。

这不正确。

当CloudFront中的Minimum TTL设置为大于max-ages-maxage时,或者原始回复包含no-cacheno-store和/中的任何一个时或private指令,CloudFront仍然存储最小TTL的对象。

这就是为什么它被称为"最小" TTL。 CloudFront假设TTL短于此值的对象(由这些指令指示)仍然应该被缓存 - 只是不超过最小TTL。因此,如果这是一个很大的值,S3的请求数将是最小的。

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