caching - S3 对象 header 的更改不会影响 CloudFront

标签 caching amazon-s3 amazon-cloudfront cdn cache-control

昨天我浏览了 S3 中存储桶中的对象并添加了以下 header :

Cache-Control: max-age=604800

我使用更改元数据选项来完成此操作,因为我可以轻松地按文件夹应用它:

enter image description here

现在,如果我直接请求图像,我会看到正确的标题:

Cache-Control: max-age=604800
Date: Fri, 25 May 2018 11:28:53 GMT
ETag: "1abf6cb38c4645f3de14a19beba80019"
Last-Modified: Fri, 25 May 2018 11:11:11 GMT
Server: AmazonS3
x-amz-id-2: qQk8NrWHNCOV5SmLvSQGahvYKuQIkcqQdc2I4Hdm2QLGkhet8cF4n1O+c2HLxhEVl7iBReFSflo=
x-amz-request-id: 97C53C15E86CD3FF

但这是我通过 CloudFront 请求图像时的响应:

HTTP/1.1 304 Not Modified
Connection: keep-alive
Date: Fri, 25 May 2018 11:28:15 GMT
ETag: "1abf6cb38c4645f3de14a19beba80019"
Server: AmazonS3
Age: 70693
X-Cache: Hit from cloudfront
Via: 1.1 1d7454c76d6ac81147ca3cbd1284c8ae.cloudfront.net (CloudFront)
X-Amz-Cf-Id: CLiExdWbIvxcBFcoND6JYjcKQj54QyQkWl48OyPpUPLupHZl8SPfPQ==

添加此 header 时的目的是改善 Pingdom 上的结果以利用浏览器缓存,但我仍然通过该部分中列出的 CloudFront 获取来自此存储桶的 URL:

https://d253b1eioa5z7b.cloudfront.net/bc_video_ ... 6_9_576_67de5812-fd82-4476-8b3f-886ad3a4907d.png
https://d253b1eioa5z7b.cloudfront.net/bc_video_ ... 6_9_576_a7ddd1ed-0913-41f6-927e-9db33b582a89.jpg

当我对直接从网站(没有 CDN)使用的 S3 中的其他对象执行相同的操作时,我立即注意到对 Pingdom 结果的影响。

我应该等待吗?或者我在这里做错了什么?

最佳答案

您在 S3 中进行的 Cache-Control 更改不会在 CloudFront 中更新。要将更新推送到 CloudFront,您需要更新 CloudFront 中的 Web 分配并更改设置使用源缓存 header (参见图片)。

enter image description here

这是根据 CloudFront 的 AWS 文档 details the values you can specify when updating a CloudFront Web Distribution - 在对象缓存标题下。

要进行此更改,请使用 AWS 页面中讨论的步骤,其中详细介绍了如何 Update a Web Distribution with the CloudFront console ,并密切注意步骤 5 下的第三个项目符号:缓存行为设置。您可以在此处进入如上所示的屏幕,并可以更改“使用原始缓存 header ”。

尝试一下,看看您的 Pingdom 结果是否有所改善。

关于caching - S3 对象 header 的更改不会影响 CloudFront,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50528319/

相关文章:

amazon-web-services - 使用 ffmpeg 的 AWS Lambda tmp 磁盘限制

mercurial - Amazon EC2 上实际上是否有任何 Mercurial 托管?

amazon-web-services - 在AWS CloudFront上启用POST/PUT/DELETE吗?

amazon-web-services - Cloudfront s3 分发中的有序缓存导致访问被拒绝 (403)

CSS 最初不加载,刷新时不加载(F5 或 CTRL F5),但在链接单击时加载(偶尔)

linux - 多次运行后令人困惑的 perf stat 结果

maven - Nexus:找不到 Artifact

java - 如何同时更新缓存的 Java 对象

amazon-web-services - 通过单个 CloudFront 分配支持 HTTPS URL 重定向

ios - 如何生成 "AWS Authentication String"以从 iOS 向 CloudFront 发送 POST?