CloudFront与Gzip压缩无法正常工作

3

我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:

我有一个 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

响应头

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

根据AWS文档,一切正常:
  • 接受gzip压缩
  • 内容长度已存在
  • 文件大小在1,000到10,000,000字节之间
  • ...
你知道为什么CloudFront不压缩我的文件吗?
2个回答

6

此响应已于数小时前被缓存。

age:17979

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


谢谢,就是这样。我在CloudFront控制台进行了缓存失效设置,它起作用了 ;) - onedkr

1
动态GZip压缩由CloudFront在尽力的基础上处理。根据边缘位置的容量和可用性。
为了获得可预测的压缩效果,您需要在上传到S3之前对它们进行gzip压缩。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接