当来源为 s3 时如何从 aws cloudfront 转发 headers

How to forward headers from aws cloudfront when origin is s3

我正在尝试利用我网站的浏览器缓存来取悦 "google page speed check"。

google 抱怨我的图像中没有定义过期日期,所以我试图在我的图像中添加 "cache-control" header。我通过 Amazon cloudfront 提供图像,来源是 S3。我阅读了几篇文章,我遵循的步骤是:

  1. 我转到我的 s3 存储桶并手动设置一个 "cache-control" header 对于我的测试 object(图片)。我工作了,我可以在我的浏览器中看到 header。
  2. 我转到我的 CloudFront 分配,"behaviour" -> "edit" 和 从那里我尝试了以下事情:

    a) 设置 "Forward Headers" to "all"。亚马逊抱怨 "all" 值 当原点为 s3.

    时无法设置

    b) 设置 "Forward Headers" to "Whitelist" -> 添加 "Origin" 作为 列入白名单 header。它不起作用。当我检查我的浏览器时,我不 查看 "cache-control" header

    c) 将 "Forward Headers" to "None" -> 和 "Object Caching" 设置为“使用 原始缓存 Headers”。它不起作用。

    d) 将 "Forward Headers" 设置为 "None" -> 并将 "Object Caching" 设置为 "Cusomize" -> 为 min/max/default TTL 指定一个值。它没有 工作。

所以我 运行 没有选择和希望。有什么想法可以让 CloudFront 将 header 转发给浏览器吗?

问题是您没有等待更改传播。我一直在成功使用以下配置。

Post 这个,就等变化传播了。 (如果你很不耐烦,那就创建一个*失效)

要上传资产,您可以使用以下命令[假设您已经下载了aws cli]。

aws s3 sync local_dir s3://bucket --cache-control max-age=604800