gpt4 book ai didi

amazon-web-services - Cloudfront 未返回内容编码 header

转载 作者:行者123 更新时间:2023-12-04 08:15:54 25 4
gpt4 key购买 nike

我正在尝试将压缩的 CSS 和 JS 文件传送到我的 Web 应用程序。这些文件托管在 S3 上,在 S3 源之前有一个 Cloudfront 分发,以提供边缘缓存。我无法将这些文件压缩到浏览器并使用正确的缓存相关 header 以允许浏览器缓存。

我有一个以 S3 作为 Origin 的 Cloudfront 发行版,用于为我的 Web 应用程序提供 JS 和 CSS 文件。我最初设置 CloudFront 来压缩文件,但它不会发送 Cache-ControlETag响应中的 header 。

由于我也想利用浏览器缓存,我想将压缩文件存储在 S3 中,使用 Cache-Control , 和 Content-Encoding附头。我这样做了,CloudFront 确实开始返回 Cache-ControlETag响应中的 header ,但它不会返回 Content-Encoding: gzip响应中的 header (我在 S3 的文件元数据中设置的)。由于响应中缺少此 header ,因此浏览器不知道要解压缩响应并以无法读取的文件结束。

我还尝试设置查看器响应边 lambda 以添加 Content-Encoding header ,但这是不允许的(请参阅 the AWS docs )并导致 LambdaValidationError。

我在这里遗漏了什么可以让文件通过压缩进入浏览器,仍然允许Cache-ControlETag标题使其通过浏览器?

任何帮助将非常感激!

最佳答案

我通常这样做的方式是将未压缩的内容上传到 S3 存储桶中并放入 Cache-Control那里你的项目的标题。 Cache-Control header 是我在原点(S3)中设置的唯一内容。

在 Cloudfront 中,我选中了“行为设置”中的“自动压缩对象”选项,让 Cloudfront 为我压缩文件。这照顾了 Content-EncodingLast-Modified header 和 gzip 压缩。这应该就是你所需要的。您不会看到 ETag来自 Cloudfront 的标题,但 Last-Modified在这里基本上做同样的事情。

如果您没有看到您的更改通过,请检查您是否正确地使 Cloudfront 缓存无效。看到很多人放/在盒子里,但它真的是 /*使整个分布无效。

https://aws.amazon.com/about-aws/whats-new/2015/05/amazon-cloudfront-makes-it-easier-to-invalidate-multiple-objects/

这应该处理 gzip 压缩、从 CDN 缓存和浏览器缓存。

祝你好运!

关于amazon-web-services - Cloudfront 未返回内容编码 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48931350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com