![Amazon CloudFront 上的 Gzip 压缩问题](https://linux22.com/image/718389/Amazon%20CloudFront%20%E4%B8%8A%E7%9A%84%20Gzip%20%E5%8E%8B%E7%BC%A9%E9%97%AE%E9%A2%98.png)
我有一个以 S3 为源配置的 CloudFront 分发版。
我已按照 Amazon 指南启用“自动压缩对象”。等待分发状态显示“在线”,然后使所有文件无效。
我的回复标头是:
Age:5
Connection:keep-alive
Content-Length:232359
Content-Type:application/javascript
Date:Sat, 03 Mar 2018 15:39:10 GMT
Last-Modified:Sat, 03 Mar 2018 15:37:32 GMT
Server:AmazonS3
Vary:Accept-Encoding
Via:1.1 4dbdc57755819d1a0ec1defc2630d677.cloudfront.net (CloudFront)
X-Amz-Cf-Id:6eHPWzOXv2J6kIvzuieoI9chtPBBvEvJFH9fb3yMwHvvcMZ4xsigCA==
X-Cache:Hit from cloudfront
请求标头:
Accept:*/*
Accept-Encoding:gzip, deflate, br
Accept-Language:en-GB,en;q=0.9,en-US;q=0.8,pl;q=0.7,zh;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Host:d2h5tcpn9r8alm.cloudfront.net
Pragma:no-cache
Referer:https://noru.co.uk/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
它有“内容长度”和支持的“内容类型”,我错过了什么?我快疯了……
从那时起,我按照上面描述的步骤创建了一个新的 s3 存储桶和新的分发,但选择了不同的存储桶位置(以防万一产生影响),以下是分发的常规设置:
Delivery Method Web
Cookie Logging Off
Distribution Status Deployed
Comment -
Price Class Use All Edge Locations (Best Performance)
AWS WAF Web ACL -
State Enabled
Alternate Domain Names (CNAMEs) -
SSL Certificate Default CloudFront Certificate (*.cloudfront.net)
Domain Name d189ud9v76clu1.cloudfront.net
Custom SSL Client Support -
Security Policy TLSv1
Supported HTTP Versions HTTP/2, HTTP/1.1, HTTP/1.0
IPv6 Enabled
Default Root Object -
Last Modified 2018-03-03 15:46 UTC
Log Bucket
和行为: 分配行为
我仍然无法让 gzip 工作,这是新文件: http://d189ud9v76clu1.cloudfront.net/app.min.js
答案1
您的请求是否包含必要的Accept-Encoding: gzip
标头?
您的标题看起来像 curl 输出,默认情况下不会发送该标题。
您可以通过以下方式使用 curl 测试 gzip 编码:curl -H "Accept-Encoding: gzip" https://example.com/asset.js"
答案2
我会看看是否能总结一下发生在我身上的事情,也许这会对某些人有所帮助。
是否对 S3 进行了初始设置。设置了 CORS,但未添加 Content-Length。是否对 CloudFront 进行了初始设置。未检查压缩。
一切都部署好了。
在域上运行 GTMetrix 测试并获取 gzip 的 F。
回去谷歌搜索如何让它工作。意识到我需要 Content-Length 标头<AllowedHeader>Content-Length</AllowedHeader>
,并意识到我需要返回 CloudFront 并检查 Distribution 上的压缩。
但是……您还需要使缓存无效。基本上所有资产都返回 304(未修改)。因此您将无法获得经过 gzip 压缩的资产。
分发、编辑、无效、创建*
并执行。
希望能帮助到你。
答案3
之后我付费让 AWS 帮助台帮我解决了这个问题,以下是他们的回复:
我确实理解,因为这可能会令人沮丧,无法使用开发人员工具查看对配置所做的更改。
从在线文档中,我确实确认它可能有点令人困惑,我将进行反馈请求以对文档进行一些更改,在您的情况下,它是更多的性能变化,如果您查看 Chrome 浏览器的底部,开发人员工具下的网络选项,您将看到您的页面性能如何受到 gzip 压缩的影响。
要通过浏览器查看配置,另一个选项与您在“curl”命令输出中获得的相同,即从任何浏览器查看开发人员工具中的响应标头。
您可以进入开发人员工具 -> 选择网络来找到它:* 当您看到所有资源链接时,单击顶部链接域名“noru.co.uk”。 * 这将打开您的标头,它将提供与 curl 命令相同的输出,例如:
接受范围:字节
Alt-Svc:quic=":443";ma=2592000;v="35,37,38,39"
缓存控制:无存储、无缓存、必须重新验证、后检查=0、预检查=0
内容编码:gzip
内容长度:3152
内容类型:text/html;字符集=utf-8
日期:2018 年 3 月 20 日星期二 06:37:04 GMT
Etag:“7073226-1521527798;gz”
到期时间:1981 年 11 月 19 日星期四 08:52:00 GMT
指令:无缓存
服务器:LiteSpeed
变化:接受编码
X-Firefox-Spdy:h2
字符集:utf-8
x-litespeed-cache:命中,私有
x-powered-by: Craft CMS
这将为您提供该域的网页配置的大部分信息。
我希望这会有所帮助,如果您有任何其他疑虑,请随时与我们联系,我很乐意为您提供进一步的帮助。