CloudFront 的 Gzip 压缩不起作用

one*_*dkr 3 gzip amazon-s3 amazon-web-services amazon-cloudfront

我有一个 Angular 应用程序,即使使用产品模式构建,也有多个大文件(超过 1MB)。

我想使用 CloudFront 上提供的 gzip 压缩功能来压缩它们。

我在 CloudFront 控制台中激活了“自动压缩对象”选项。我的发行版的起源是 s3 存储桶。

但是,当我通过浏览器加载页面时下载的捆绑包未使用 gzip 压缩

这是请求/响应的示例

请求标头:

:authority:dev.test.com
:method:GET
:path:/vendor.cc93ad5b987bea0611e1.bundle.js
:scheme:https
accept:*/*
accept-encoding:gzip, deflate, br
accept-language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
cache-control:no-cache
pragma:no-cache
referer:https://dev.test.com/console/projects
user-agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Run Code Online (Sandbox Code Playgroud)

响应头

accept-ranges:bytes
age:17979
content-length:5233622
content-type:text/javascript
date:Tue, 07 Nov 2017 08:42:08 GMT
etag:"6dfe6e16901c5ee5c387407203829bec"
last-modified:Thu, 26 Oct 2017 09:57:15 GMT
server:AmazonS3
status:200
via:1.1 9b307acf1eed524f97301fa1d3a44753.cloudfront.net (CloudFront)
x-amz-cf-id:9RpiXSuSGszUaX7hBA4ZaEO949g76UDoCaxzwFtiWo7C-wla-PyBsA==
x-cache:Hit from cloudfront
Run Code Online (Sandbox Code Playgroud)

根据AWS文档,一切正常:

  • 接受编码:gzip
  • 内容长度呈现
  • 文件大小在 1,000 到 10,000,000 字节之间
  • ...

您知道为什么 cloudfront 不压缩我的文件吗?

Mic*_*bot 6

该响应已在几个小时前缓存。

age:17979
Run Code Online (Sandbox Code Playgroud)

CloudFront 不会返回并压缩已缓存的内容。

当 CloudFront 从您的源获取文件时,会压缩每个边缘站点中的文件。当您配置 CloudFront 来压缩内容时,它不会压缩已位于边缘位置的文件。此外,当边缘站点中的某个文件过期并且 CloudFront 将该文件的另一个请求转发到您的源时,如果您的源返回 HTTP 状态代码 304(这意味着边缘站点已拥有最新的文件),则 CloudFront 不会压缩该文件。文件的版本。如果您希望 CloudFront 压缩已位于边缘位置的文件,您需要使这些文件失效。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html

执行缓存失效,等待其完成,然后重试。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html