繁体   English   中英

CloudFront的Gzip压缩不起作用

[英]Gzip compression with CloudFront doesn't work

我有一个有角度的应用程序,即使使用prod模式构建,也具有多个大文件(超过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为什么不压缩我的文件吗?

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

age:17979

CloudFront不会回过头来gzip已缓存的内容。

从您的来源获取文件时,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

动态GZip压缩由CloudFront尽力而为。 基于边缘位置的容量和可用性。

为了获得可预测的压缩率,您需要先将其gzip压缩后再上传到S3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM