我有一个角度应用程序,即使使用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文档,一切正常:
您知道为什么cloudfront会压缩我的文件吗?
答案 0 :(得分:2)
这个回复是在几个小时前缓存的。
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
答案 1 :(得分:0)
CloudFront将尽最大努力处理动态GZip压缩。基于边缘位置的容量和可用性。
要获得可预测的压缩,您需要在上传到S3之前对其进行gzip。