Amazon CloudFront 上的 Gzip 壓縮問題

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

答案1

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

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

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

答案2

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

進行了 S3 的初始設定。設定 CORS 但未新增 Content-Length。完成了 CloudFront 的初始設定。沒有勾選壓縮。

一切都部署好了。

在網域上執行 GTMetrix 測試並獲得 F(表示 gzip)。

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

但是...您還需要使快取無效。基本上所有資產都回來了 304(未修改)。所以你不會得到你的壓縮資產。

分發、編輯、失效、創建*並運行。

希望能幫助你。

答案3

之後我付費請AWS服務台幫我解決這個問題,這是他們的回覆:

我確實理解,因為無法使用開發人員工具查看對配置所做的更改可能會令人沮喪。

從線上文件中,我確實確認這可能有點令人困惑,我將提出反饋請求以對文件進行一些更改,在您的情況下,如果您查看 Chrome 瀏覽器網絡的底部,則更多的是性能更改開發人員工具下的選項,您將看到gzip 壓縮對頁面效能的影響。

若要透過瀏覽器查看配置,另一個選項與您在「curl」命令輸出中獲得的選項相同,即透過從任何瀏覽器查看開發人員工具中的回應標頭。

如果您前往“開發人員工具”->“選擇網頁”,則可以找到此資訊: * 當您看到指向資源的所有連結時,請點擊頂部連結網域名稱“noru.co.uk”。 * 這將打開您的標頭,它將提供與curl命令相同的輸出範例:

接受範圍:位元組

Alt-Svc: quic=":443";馬=2592000; v=“35,37,38,39”

快取控制:無儲存、無快取、必須重新驗證、後檢查=0、預檢查=0

內容編碼:gzip

內容長度:3152

內容類型:text/html;字符集=utf-8

日期:2018 年 3 月 20 日星期二 06:37:04 GMT

電子標籤:“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

這將為您提供該網域網頁的大部分設定資訊。

我希望這對您有所幫助,如果您有任何其他問題,請隨時與我們聯繫,我很樂意為您提供進一步的幫助。

相關內容