2013-04-14 22 views
22

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

 
gzip    on; 
#gzip_min_length 1000; 
gzip_http_version 1.1; 
gzip_vary on; 
gzip_comp_level 6; 
gzip_proxied any; 
gzip_types text/plain text/html text/css application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml application/rdf+xml; 
#it was gzip_buffers 16 8k; 
gzip_buffers 128 4k; #my pagesize is 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 
Server: nginx/1.2.0 
Date: Sun, 14 Apr 2013 13:15:43 GMT 
Content-Type: application/x-javascript 
Content-Length: 208463 
Connection: keep-alive 
Last-Modified: Sun, 14 Apr 2013 10:58:06 GMT 
Vary: Accept-Encoding 
Expires: Thu, 31 Dec 2037 23:55:55 GMT 
Cache-Control: max-age=315360000 
Pragma: public 
Cache-Control: public 
Accept-Ranges: bytes 

私が間違ってやっていることの任意のアイデアを得たか、私は圧縮されたコンテンツを取得するために何をすればいいの?

+3

これは、次の行によって引き起こされる可能性があります: 'gzip_http_version 1.1;'? '1.0 'に変更するとどうなりますか? –

+0

ありがとうございましたChunaあなたの提案(親指アップ:))今Googleの速度の洞察力は警告を与えません - カール私は同じ結果を与える – Alaa

+0

とGoogleはまだhttp://www.albawaba.com/countries_listとして非圧縮として与えるよく – Alaa

答えて

8

ただ変更しましたgzip_http_version 1.1;です。gzip_http_version 1.0;それが働いた

+0

これは私のためにも働いています。あなたはそれがなぜそうであるか知っていますか? – Prabhakaran8737

+0

この回答は適切な問題解決法ではなく、回避策の可能性が高いとここで言及する必要があります。 1.0にgzip_http_versionを設定すると読んでより多くの情報のために、いくつかの問題をもたらすことができる、すなわちhttps://serverfault.com/questions/418693/why-nginx-gzip-http-version-defaults-to-http-1-1 – MBI

3

あなたは実行する必要があります。

curl -I --compressed my_js_file 

をカールgzipのためにAccept-Encodingヘッダを送信するために - クライアントは、それはそれを受け入れるだろうと言って、ヘッダを送信した場合、サーバはコンテンツのみを圧縮します。

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

gzip_disable "msi6" 

ではなく、IE 5.5および6で無効にするには正規表現を使用して、あなたはそれがいつものように長いgzip形式などの圧縮されているため、タイプとしてテキスト/ HTMLを指定する必要はありません活性化される。

+0

curl --compressed --head http://www.albawaba.com/sites/default/files/js/js_367664096ca6baf65052749f685cac7b.js提供: HTTP/1.1 200 OK サーバー:nginx/1.2.0 日付:Sun、 14 Apr 2013 16:59:34 GMT コンテンツタイプ:application/x-javascript – Alaa

+0

これは完全な出力ではないと思われます。 Content-Typeではなく、チェックする必要のあるContent-Encodingヘッダーです。私は地元のnginxのサーバー上でカール--compressedを使用している場合、私は「コンテンツ・エンコード:gzipで」取得、ないのContent-Encodingヘッダを私は、また--compressedオプション – junichiro

+0

が含ま多分あまりにも明白、しかし、あなたが再起動することを確認していない場合設定ファイル – junichiro

11

あなたの設定で明らかに間違ったものは見つかりませんでした。通常、gzipは&です。gzip_types application/x-javascriptはあなたを動かすには十分です。すべて正常に機能している場合は、「Content-Encoding:gzip」が返されます。

私はGOOGLE DEVELOPER TOOLSと一貫性があります(カールはブラウザのように動作しません)。

Chromeでは、右クリックして「要素を調べる」に行き、次に「ネットワーク」に移動してから(必要があればページをリロードする)、リソースをクリックしてヘッダータブをチェックすると、出力は次のようになりますあなたのコンテンツはgzip圧縮された取得されていないことを確認している場合、私は正常に立ち上がって以下で非常に高速で実行とにかく

Request URL:https://ssl.gstatic.com/gb/js/sem_a3becc1f55aef317b63a03a400446790.js 
Request Method:GET 
Status Code:200 OK (from cache) 
Response Headersview source 
age:199067 
cache-control:public, max-age=691200 
content-encoding:gzip 
content-length:19132 
content-type:text/javascript 
date:Fri, 12 Apr 2013 06:32:58 GMT 
expires:Sat, 20 Apr 2013 06:32:58 GMT 
last-modified:Sat, 23 Mar 2013 01:48:21 GMT 
server:sffe 
status:200 OK 
vary:Accept-Encoding 
version:HTTP/1.1 
x-content-type-options:nosniff 
x-xss-protection:1; mode=block 

## Compression 
gzip    on; 
gzip_buffers  16 8k; 
gzip_comp_level 4; 
gzip_http_version 1.0; 
gzip_min_length 1280; 
gzip_types  text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/bmp; 
gzip_vary   on; 

(GZIP、イェーイあるコンテンツのエンコードに注意してください)コードの代わりにこれを試してみてください。問題のローカライズに役立つ時間です。

設定を変更した後、nginxを再起動または再ロードすることを忘れないでください。

ログを確認して、面白いことがあるかどうかを確認することもできます。

+0

YSlowのとGoogleのスピードテストの両方が私のコンポーネントが圧縮されていないことを示している。..を参照してくださいhttps://developers.google.com/speed/pagespeed/insights#url=http_3A_2F_2Fwww.albawaba.com_2F&mobile=false – Alaa

+0

あなたが設定を変更しましたnginxを再起動します。結果は何でしたか?私がやったことを確認 –

+0

は,,,それは彼らがすでに圧縮されているので、 – Alaa

3

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

ここには、ブラウザがドメインからプルダウンするファイルがあります。右側の数字はファイルのダウンロードサイズです。

Files served from domain

あなたはスクリーンショットから指示することができないかもしれませんが、テキストコンテンツファイルはすべてのJSは、あなたの質問に言及したファイルのを除いて、gzip圧縮されたARE。スクリーンショットでは、jsファイルは緑色のファイルで、サイズは約200Kです。このファイルサイズは、gzipバッファー(128K)に指定したサイズよりも大きくなっています。

Gzip module docsは、バッファが圧縮されていないデータまたは圧縮されたデータに使用されているかどうかについて、実際にgzipバッファが使用されているかどうかをよく示していません。しかし、次の投稿は、バッファサイズが圧縮されていないファイルサイズよりも大きいことを示しているようです:Large files with NGINX, GZip, and SSL

+0

おかげChue、私はgizip_buffers([編集済み]上記の質問に示すように)、そして今でも同じ問題を提起している、あなたが途中で任意の考え – Alaa

+0

を持っている場合、私は本当にあなたの助けに感謝し、それでもcoutries_listいない教えてくださいgzipされましたが、それは128K未満です... – Alaa

+0

@Alaa - あなたはgzippedされていないcountries_listについて正しいです。私は逃しました。私は両方のファイルを置くと彼らは両方のgzippedされているテストnginxのセットアップがあります。私のgzip設定には 'gzip on'と' gzip_types ... 'の2行しかありません。また、ファイルがあなたのnginxサーバーの前でプロキシによってキャッシュされている可能性はありますか?あなたはnginxマシン( 'curl ... http://127.0.0.1/.../ js_36..js')でカールしてみることができますか? –

19

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

  • -H "Accept-Encoding: gzip":あなたは対応してContent-Encoding: gzipヘッダーが表示されるはずです(カールの-vで出力ヘッダに必要な場合がありますフラグ)と、実際のgzipストリームのように、コンテンツの出力が一見不明瞭になります。
  • --compressed:レスポンスヘッダーにはまだContent-Encoding: gzipが表示されますが、curlは内容を出力する前に解凍することがわかります。
+4

奇妙なことです。私のNginx on AWS Ubuntuインスタンスは、ブラウザから要求を行うときに 'Content-Encoding:gzip'ヘッダを設定しません。しかし、私が 'curl -H" Accept-Encoding:gzip "-I http:// example.com'を実行すると、Nginxは'Content-Encoding:gzip'ヘッダをうまく設定します。どうして?ヘッダは設定されていませんが、コンテンツはgzipされているようです。 GoogleのPageSpeedで確認したところ、gzipについては不平を言っていません。 – Green

+0

難しいです。様々なサーバは、これを中心に異なるロジックを有する。特定のUser-agentまたはContent-typeをgzipエンコーディングからブラックリスト化するものもあります。それ以外の場合は、ブラウザにユーザーが表示されない場合があります。それは本当に依存します。要求がブラウザから行われた場合の応答でgzip'ヘッダーではなく::) – lot

+0

私は@Greenと同じ動作を経験してる、nginxのはログにGZIP圧縮を報告し、CURLの要求のため、私は 'のContent-encodingを見ますChromeデベロッパーツールの[ネットワーク]タブにあります。 – Marc

1

Alaaと同じように、私はgzip_http_version 1.0;(以前はバージョンが指定されていませんでした)を追加する必要がありました(Firefox 27.0.0を試しました)。

3

私は私の/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; 

私は標準gzip_types構成にapplication/javascriptを追加する必要がありましたので、ご注意ください。

2

ここで私のnginxの設定とは動作します。

gzip    on; 
gzip_min_length  1000; 
gzip_buffers  4 8k; 
gzip_http_version 1.0; 
gzip_disable  "msie6"; 
gzip_types   text/plain text/css application/json application/javascript application/x-javasc ript text/xml application/xml application/xml+rss text/javascript; 
gzip_vary   on; 

私がキーポイントは、gzip_disable gzip_disableとgzip_typesだと思います。

関連する問題