CloudFront/S3未使用缓存控制

3
我正在上传一张图片到S3。以下是头部/请求信息:

我正在上传一张图片到S3。以下是头部/请求信息:

PUT /d899a0475f39e4a1d8c4b2af540d0820.png?AWSAccessKeyId=AKIAIHRUBWYK7YNNWSLQ&Expires=1376548390&Signature=uP677w4lNA81USKByuJwU0FmUuE%3D&Cache-Control:%20max-age=229000 HTTP/1.1
Host: test199801672.s3.amazonaws.com
Content-Length: 436983
Content-Type: image/png

我传入了Cache-Control: max-age=229000

我收到了200 OK的响应,并且图片已经上传,但是出现了一个问题,就是Cache-Control的值并没有被读取。在下载图片时,我得到了下面的结果:

HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 436983
Connection: keep-alive
Date: Thu, 15 Aug 2013 05:33:15 GMT
Last-Modified: Thu, 15 Aug 2013 05:33:11 GMT
ETag: "dbb3afa053cfc18e45f1d8c7ef8ddfd4"
Accept-Ranges: bytes
Server: AmazonS3
Via: 1.0 9dd1962ecf68cae08454f386dd1975c1.cloudfront.net (CloudFront)
X-Cache: Miss from cloudfront
X-Amz-Cf-Id: anyUV_WtyIdEjDrRsrsWc5l9WGIVW0AnIjNn7b_g_EgS7rlP0rxoAw==

响应中没有 Cache-Control 标头。 X-Cache 显示为:Miss from cloudfront。我做错了什么吗?谢谢!

你检查了Cloudfront分发的缓存行为设置吗?对象缓存是否选中了“使用源缓存标头”? - Yudong Li
2个回答

2

对我而言有效。

我已经使用控制面板下的元数据为S3中的每个文件设置了Cache-Control max-age = 3600头文件。(API可以完成此操作)

我的CloudFront拥有行为对象缓存=使用源缓存标头。

现在,我的网站标头响应显示了我在S3中设置的Cache-Control标头。

(当然,必须等待CloudFront使其现有版本的这些文件无效,我通过CloudFront使这些文件失效来帮助解决此问题)


你使用了“自定义源”还是“S3源”? - mana

0

当通过地址栏请求img资源时,Chrome和Opera在请求头中发送Cache-Control=0,而Safari发送Cache=No。因此,浏览器不会从缓存中获取图像。

Firefox不发送这样的标头。

但是,当通过图像src标记请求相同的URL时,所有浏览器都尊重缓存控制,并且在它们的请求中上述标头永远不会被发送。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接