Amazon-Web-Services

Amazon CloudFront 上的 Gzip 壓縮問題

  • July 28, 2019

我有一個配置為 S3 作為源的 CloudFront 分配。

根據亞馬遜指南,我已啟用“自動壓縮對象”。等待分發狀態顯示“線上”然後使所有文件無效。

我的響應標頭是:

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

您的請求是否包含必要的Accept-Encoding: gzip標頭?

您的標頭看起來像 curl 輸出,預設情況下不發送該標頭。

您可以通過以下方式使用 curl 測試 gzip 編碼:curl -H "Accept-Encoding: gzip" https://example.com/asset.js"

我會看看我是否可以總結髮生在我身上的事情,也許這會對某人有所幫助。

做了S3的初始設置。設置 CORS,但未添加 Content-Length。做了 CloudFront 的初始設置。沒有檢查壓縮。

一切部署。

在域上執行 GTMetrix 測試並為 gzip 獲得 F。

返回並Google如何使其工作。意識到我需要 Content-Length 標頭<AllowedHeader>Content-Length</AllowedHeader>並意識到我需要返回 CloudFront 並檢查分配上的壓縮。

但是…您還需要使記憶體無效。基本上所有資產都返回 304(未修改)。所以你不會得到你的壓縮資產。

分發、編輯、失效、創建*和執行。

希望能幫助到你。

引用自:https://serverfault.com/questions/899820