サーバーがGZippedコンテンツを提供しているかどうかを確認するにはどうすればよいですか?


160

NGinxサーバー上にwebappがあります。私gzip onはconfファイルに設定し、それが機能するかどうかを確認しようとしています。YSlowはそうではないと言っていますが、テストを行った6つのWebサイトのうち5つはそうだと言っています。これについて明確な答えを得るにはどうすればよいですか?結果に違いがあるのはなぜですか?

回答:


229

一つの可能な答えは、当然、であるように見えますcurl

$ curl http://example.com/ --silent --write-out "%{size_download}\n" --output /dev/null
31032
$ curl http://example.com/ --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null
2553

2番目のケースでは、クライアントはサーバーにコンテンツのエンコードをサポートしていることを通知し、応答が本当に短く、圧縮されていることがわかります。


3
これは事実ですが、gzipは特定のファイルタイプを圧縮し、他のファイルタイプを除外するように構成できます。したがって、このテストを使用してカールするファイルが、圧縮されるタイプのものであることを確認してください。
タイラー

5
たとえば、www 以外からさもなければsize_downloadの結果が間違っている可能性があるため、すべてのリダイレクトを追跡する-Lためにcurlもフラグを使用することをお勧めしwww.ます
vladkras

若い開発者に1つの印象を与えることができるとしたら、それはしっかりしたUNIX基盤を持つことの重要性です。CURLの+1。最初は混乱しますが、知っていると救命者になります。
アクロン

105

更新

Chromeはレポートの方法を変更しました(興味がある場合は元の回答を参照してください)。開発者ツール(F12)を使用するとわかります。[ネットワーク]タブに移動し、調査するファイルを選択して、右側の[ヘッダー]タブを確認します。gzipされている場合は、Content-Encodingに表示されます。

この例では、slider.jpgは実際にgzipされています。

ここに画像の説明を入力してください

このページと比較してpngファイルを見てください。そのような指定はありません。

ここに画像の説明を入力してください

明確にするために、1つはjpgでもう1つはpngであるからではありません。1つはgzip圧縮されており、もう1つは圧縮されていないためです。


前の回答

Chromeでは、デベロッパーツールをプルアップして[ネットワーク]タブに移動すると、圧縮がない場合は次のように表示されます。

ここに画像の説明を入力してください

そして、圧縮がある場合は次のようになります。

ここに画像の説明を入力してください

つまり、上部と下部の番号が同じであっても、圧縮は行われません。


3
応答ヘッダーを検査することをお勧めします。この方法では、gzip圧縮が使用されているか、他の圧縮アルゴリズムが使用されているかはわかりません。
サミュエル

4
Chromeデベロッパーツールの[ネットワーク]タブで、リクエストのアセット名/リンクをクリックすると、レスポンスヘッダーを検査しgzipて、Content-Encodingキーを確認できます![screenshot] [1] [1]:i.stack .imgur.com / Bpb5W.png(http://content.screencast.com/users/…
D48

1
最近のChromeバージョン(バージョン44.0.2403.130 m)には、サイズ/コンテンツの詳細が表示されないようです- つまり、gzipの詳細-i.imgur.com/MTz7DCM.png。です。なぜその理由を知っていますか?
アンディDufresne

33

応答ヘッダーを参照してください。FireFoxでは、Firebugで確認できます。

Content-Encoding    gzip

サーバーがgzipコンテンツをサポートしている場合は、これが表示されます。


9
これは、クライアントが「Accept-Encoding:gzip、deflate」を送信した場合にのみ取得されます
Maciej Swic '10 / 07/12

2
元のファイルのエンコーディングを確認するためのハードリフレッシュ。ファイルがステータス304で提供される場合、キャッシュされたバージョンはすでに解凍されているようです。(私の場合、Content-EncodingではなくETagヘッダーが表示されます)
ptim

11

新しいバージョンのChromeでは、[開発者ツール]> [ネットワーク]で、列名を右クリックし、コンテンツエンコーディングオプションを選択してその列を追加できます(画像のブラックボックス)。

そして、そのgzipコンテンツのサイズを@Outfast Sourceとして表示したい場合は、ビューの横にあるアイコン(画像では緑色のボックスとして表示されます)をクリックできます。

これで、gzipが有効になっているコンテンツを確認できます。

ここに画像の説明を入力してください


これはすばらしい回答ですが、<kbd> Content-Encoding </ kbd>は<kbd> Response Headers </ kbd>に移動しました。
Dan Dascalescu 2018


8

私はzoulの答えに基づいてこのスクリプトを書きました:

#!/bin/bash

URL=$1
PLAIN="$(curl $URL --silent --write-out "%{size_download}\n" --output /dev/null)"
GZIPPED="$(curl $URL --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null)"

if test $PLAIN -gt $GZIPPED
then echo "supported"
else echo "unsupported"
fi

例:

$ ./script.sh https://example.com/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.