web-dev-qa-db-ja.com

Amazon CloudFrontでのGzip圧縮に関する問題

CloudFrontディストリビューションをS3をオリジンとして構成しました。

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

「Content-length」とサポートされる「Content-Type」があり、何が欠けていますか?私はここで怒っています...

それ以来、上記の手順を実行して新しい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

そして、振る舞い: distribution behaviours

ここでもgzipを機能させることができません。新しいファイルは http://d189ud9v76clu1.cloudfront.net/app.min.js です。

4
Lukigi

その後、私はこの問題を解決するためにAWSヘルプデスクに支払いました。ここに彼らの返信があります:

開発者ツールを使用して構成に加えられた変更を表示できずイライラする可能性があるため、理解しました。

オンラインのドキュメンテーションから、私はドキュメンテーションにいくつかの変更を加えるためにフィードバック要求を行うのが少し混乱する可能性があることを確認します。あなたの場合、Chromeブラウザ、[開発者ツール]の[ネットワーク]オプションでは、gzip圧縮がページのパフォーマンスにどのように影響したかがわかります。

任意のブラウザーから開発者ツールの応答ヘッダーを表示することにより、「curl」コマンド出力で取得するのと同じように、ブラウザーを介して構成を表示するには、別のオプション。

これは、[開発ツール]-> [ネットワークの選択]に移動すると見つけることができます。*リソースへのすべてのリンクを見たので、トップリンクドメイン名「noru.co.uk」をクリックします。 *これによりヘッダーが開き、curlコマンドの例と同じ出力が得られます。

Accept-Ranges:バイト

Alt-Svc:quic = ":443"; ma = 2592000; v = "35、37、38、39"

Cache-Control:no-store、no-cache、must-revalidate、post-check = 0、pre-check = 0

コンテンツのエンコード:gzip

コンテンツの長さ:3152

Content-Type:text/html; charset = utf-8

日付:2018年3月20日火曜日06:37:04 GMT

Etag:「7073226-1521527798; gz」

有効期限:1981年11月19日木曜日08:52:00 GMT

プラグマ:キャッシュなし

サーバー:LiteSpeed

変化:Accept-Encoding

X-Firefox-Spdy:h2

文字セット:utf-8

x-litespeed-cache:ヒット、プライベート

x-powered-by:Craft CMS

これにより、そのドメインのWebページに対する設定のほとんどの情報が提供されます。

この情報がお役に立てば幸いです。他にご不明な点がありましたら、お気軽にお問い合わせください。

1
Lukigi

リクエストに必要なAccept-Encoding: gzipヘッダーが含まれていますか?

ヘッダーはcurl出力のように見えますが、デフォルトではそのヘッダーは送信されません。

Curlを使用してgzipエンコーディングをテストできます:curl -H "Accept-Encoding: gzip" https://example.com/asset.js"

2
Brennen Smith

私に何が起こったかを要約できるかどうかを確認します。これが誰かを助けるかもしれません。

S3の初期設定をしました。 CORSをセットアップしましたが、Content-Lengthが追加されていませんでした。 CloudFrontの初期設定を行いました。圧縮をチェックしませんでした。

すべてが展開されます。

ドメインでGTMetrixテストを実行し、gzipのFを取得します。

戻ってそれを機能させるために何をすべきかグーグル。 Content-Lengthヘッダーが必要であることを理解する<AllowedHeader>Content-Length</AllowedHeader>そして、CloudFrontに戻り、Distributionの圧縮を確認する必要があることを認識しています。

しかし...キャッシュも無効にする必要があります。基本的に、すべてのアセットは304に戻ってきました(変更されていません)。したがって、gzipされたアセットは取得できません。

配布、編集、無効化、作成* じゃ、行け。

それが役に立てば幸い。

1
Mark