cloudfront / s3没有使用缓存控制

时间:2013-08-15 05:46:36

标签: amazon-s3 cdn amazon-cloudfront

我正在将图片上传到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

我做错了什么?谢谢!

2 个答案:

答案 0 :(得分:2)

它对我有用。

我使用元数据下的控制面板为S3中的每个文件设置了Cache-Control max-age = 3600标头。 (API可以做到这一点)

我的CloudFront具有行为对象缓存=使用原始缓存标头。

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

(当然必须等待云前端使其现有的文件验证无效,我帮助这一点以及对这些文件的CloudFront失效)

答案 1 :(得分:0)

当通过地址栏请求img资源时,Chrome& Opera在Request header&amp ;;中发送Cache-Control = 0。 Safari发送缓存=否。因为这个浏览器不会从缓存中获取图像。

Firefox不会发送此类标题。

但是当通过image src标签请求相同的url时,所有浏览器都会尊重缓存控制&在他们的请求上面的标题永远不会被发送