【问题标题】:cloudfront/s3 not using cache-controlcloudfront/s3 不使用缓存控制
【发布时间】:2013-08-17 07:22:03
【问题描述】:

我正在将图像上传到 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分发的缓存行为设置,对象缓存在“使用原始缓存标头”处打勾?

标签: amazon-s3 cdn amazon-cloudfront


【解决方案1】:

它对我有用。

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

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

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

(当然必须等待 Cloud Front 才能使这些文件的现有版本失效,我在 CloudFront 对这些文件的失效方面提供了帮助)

【讨论】:

  • 您使用的是“自定义来源”还是“s3 来源”?
【解决方案2】:

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

Firefox 不发送此类标头。

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

【讨论】:

    猜你喜欢
    • 2016-02-18
    • 2021-03-25
    • 2011-10-28
    • 1970-01-01
    • 2015-11-16
    • 2014-10-28
    • 2023-04-03
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多