Amazon CloudFront 上的 Gzip 壓縮問題
我有一個配置為 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(未修改)。所以你不會得到你的壓縮資產。
分發、編輯、失效、創建
*
和執行。希望能幫助到你。