【问题标题】:How to forward headers from aws cloudfront when origin is s3来源为 s3 时如何从 aws cloudfront 转发标头
【发布时间】:2017-02-01 01:52:05
【问题描述】:

我正在尝试为我的网站利用浏览器缓存来满足“谷歌页面速度检查”。

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

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

    a) 设置"Forward Headers" to "all"。亚马逊抱怨"all" 的价值 原点为s3时无法设置。

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

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

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

所以我没有选择和希望。有什么想法可以让CloudFront 将标头转发到浏览器吗?

【问题讨论】:

    标签: amazon-web-services amazon-s3 http-headers amazon-cloudfront


    【解决方案1】:

    问题在于您没有等待更改传播。我已经成功使用了以下配置。

    发布此内容,等待更改传播。 (如果你这么不耐烦,那就创建一个* 失效)

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

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

    【讨论】:

    • 是的,你说得对,Karan,我使我的对象无效,然后完美地工作!作为后续行动,我正在尝试在云端启用 gzip 压缩。为此,我在对象中添加了一个“Content-Length”标头,并按照 AWS 上的几篇文章/博客的指示将“自动压缩对象”设置为“是”。但是,对象没有被压缩。也许你对此有想法?
    • 您只需要选中从 CloudFront 自动缓存对象的选项,无需在 S3 中更改它
    • 同样,你将不得不再次等待:)
    • 其实我已经等过了,也让对象失效了……反正我再等一会儿
    • 如果它没有解决,也许你可以将它作为不同的问题发布。
    猜你喜欢
    • 2018-01-22
    • 2016-06-25
    • 1970-01-01
    • 2021-06-13
    • 2018-09-24
    • 2017-07-04
    • 2020-12-02
    • 2019-11-17
    • 2021-03-16
    相关资源
    最近更新 更多