34

Web サイトのコンポーネントで gzip 圧縮を有効にしようとしています。ubuntu 11.04 サーバーと nginx 1.2 があります。
ウェブサイトの私のnginx構成では、私はこれを持っています

gzip オン;
#gzip_min_length 1000;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types テキスト/プレーン テキスト/html テキスト/css アプリケーション/json アプリケーション/javascript アプリケーション/x-javascript テキスト/javascript テキスト/xml アプリケーション/xml アプリケーション/rss+xml アプリケーション/atom+xml アプリケーション/rdf+xml;
#gzip_buffers 16 8k でした。
gzip_buffers 128 4k; #私のページサイズは 4 です
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

Yslow と Google の速度測定では、gzip を使用してネットワーク経由の送信を減らすようにアドバイスされています。今私がしようとすると、curl -I my_js_file私は得ました

curl -I http://www.albawaba.com/sites/default/files/js/js_367664096ca6baf65052749f685cac7b.js
HTTP/1.1 200 OK
サーバー: nginx/1.2.0
日付: 2013 年 4 月 14 日 (日) 13:15:43 GMT
コンテンツタイプ: application/x-javascript
コンテンツの長さ: 208463
接続: キープアライブ
最終更新日: 2013 年 4 月 14 日 (日) 10:58:06 GMT
Vary: Accept-Encoding
有効期限: 2037 年 12 月 31 日 (木) 23:55:55 GMT
キャッシュ制御: max-age=315360000
プラグマ: public
キャッシュ制御: 公開
Accept-Ranges: バイト

私が何を間違えたのか、または圧縮されたコンテンツを取得するために何をすべきかについて何か考えはありますか?

4

9 に答える 9

29

他の人が書いているように、サーバーで gzip 圧縮を有効にするだけでは不十分です。クライアントは、Accept-Encoding: gzipヘッダー (またはそのスーパーセット) を介してリクエストでそれを要求する必要もあります。最新のブラウザーにはこのヘッダーが自動的に含まれますが、curl の場合は、コマンドに次のいずれかを含める必要があります。

  • -H "Accept-Encoding: gzip":Content-Encoding: gzip応答のヘッダー (curl のフラグを使用してヘッダーを出力する必要がある場合があります-v) と、実際の gzip ストリームであるコンテンツの一見文字化けした出力が表示されるはずです。
  • --compressed: 応答ヘッダーには引き続き表示Content-Encoding: gzipされますが、curl はコンテンツを出力する前に解凍することを認識しています。
于 2013-07-18T18:02:01.043 に答える
11

gzip_http_version 1.1を変更しました。gzip_http_version 1.0であること。そしてそれはうまくいった

于 2014-07-02T11:11:08.833 に答える
8

/etc/nginx/nginx.conf構成で gzip を有効にする必要がありました。

gzip on;
gzip_disable "msie6";

gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

application/javascript標準gzip_types構成に追加する必要があることに注意してください。

于 2014-07-01T21:19:48.767 に答える
5

次を実行する必要があります。

curl -I --compressed my_js_file

curl が gzip の Accept-Encoding ヘッダーを送信するようにするには、クライアントがコンテンツを受け入れるというヘッダーを送信した場合にのみ、サーバーはコンテンツを圧縮します。

NBあなたが書くことができます:

gzip_disable "msi6"

IE 5.5 および 6 で正規表現を使用して無効にするのではなく、gzip がアクティブである限り常に圧縮されるため、text/html をタイプとして指定する必要はありません。

于 2013-04-14T13:55:19.350 に答える
5

ここでは推測にすぎませんが、gzip バッファー サイズを増やす必要があるかもしれません。

ブラウザがドメインから取得するファイルは次のとおりです。右側の数字はファイルのダウンロード サイズです。

ドメインから提供されるファイル

スクリーン ショットからはわからないかもしれませんが、質問で言及した js ファイルを除いて、テキスト コンテンツ ファイルはすべて gzip されています。スクリーンショットでは、js ファイルは緑色のファイルで、サイズは約 200K です。このファイル サイズは、gzip バッファーに指定したサイズ (128K) を超えています。

Gzip モジュールのドキュメントは、gzip バッファーが何に使用されるか (バッファーが非圧縮データまたは圧縮データのどちらに使用されるか) について、実際には適切な指標を示していません。ただし、次の投稿は、バッファ サイズが圧縮されていないファイル サイズより大きくなければならないことを示しているようです: Large files with NGINX, GZip, and SSL

于 2013-04-14T20:02:50.937 に答える