ウェブサイトのコンポーネントのgzip圧縮を有効にしようとしています。 Ubuntu 11.04サーバーとnginx 1.2があります。
ウェブサイトのnginx設定で、これがあります
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; #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 サーバー:nginx/1.2。 0 日付:日、2013年4月14日13:15:43 GMT Content-Type:application/x-javascript Content-Length:208463 Connection: keep-alive 最終変更日:2013年4月14日日曜日10:58:06 GMT 可変:Accept-Encoding 有効期限:2037年12月31日23:55:55 GMT Cache-Control:max-age = 315360000 Pragma:public Cache-Control:public Accept-Ranges:バイト
私が間違ったことをしたこと、または圧縮されたコンテンツを取得するにはどうすればよいですか?
ちょうど変わった gzip_http_version 1.1; することが gzip_http_version 1.0; そしてそれは働いた
他の人が書いたように、サーバーでgzip圧縮を有効にするだけでは十分ではありません。クライアントは、Accept-Encoding: gzip
ヘッダー(またはそのスーパーセット)を介して要求でgzip圧縮を要求する必要があります。最新のブラウザにはこのヘッダーが自動的に含まれますが、curlの場合、コマンドに次のいずれかを含める必要があります。
-H "Accept-Encoding: gzip"
:応答にContent-Encoding: gzip
ヘッダーが表示されるはずです(curlの-v
フラグを使用してヘッダーを出力する必要がある場合があります)。 。--compressed
:応答ヘッダーにContent-Encoding: gzip
が表示されるはずですが、curlは出力する前にコンテンツを解凍することを知っています。あなたの設定に明らかに問題はありません。通常はgzip on&gzip_types application/x-javascriptで十分です。すべてが正常に機能している場合、「Content-Encoding:gzip」が返されます。
注意してください:GOOGLE DEVELOPER TOOLSとの一貫性はずっと高くなっています(カールはブラウザのように動作しません)。
Chromeでは、右クリックして[要素の検査]に移動し、[ネットワーク]に移動して(必要に応じてページをリロードします)、リソースをクリックしてヘッダータブを確認します。出力は次のようになります(コンテンツに注意してください) -エンコードはgzip、yay):
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
とにかく、コンテンツがgzip圧縮されていないことが確かな場合、私は通常、次のようにして非常に高速に起動して実行します。
## 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;
コードの代わりにこれを試してみたり、問題を特定したりするために値を1つずつ調整したりできます。
構成を変更した後は、nginxを再起動または再ロードすることを忘れないでください。
また、ログをチェックして、まだ行き詰まっているはずの興味深いものがあるかどうかを確認することも役立ちます。
/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
構成に追加する必要があることに注意してください。
以下を実行する必要があります。
curl -I --compressed my_js_file
curlがgzipのAccept-Encodingヘッダーを送信するようにする-サーバーは、クライアントがそれを受け入れるというヘッダーを送信した場合にのみコンテンツを圧縮します。
NBあなたが書くことができます:
gzip_disable "msi6"
正規表現を使用してIE 5.5および6で無効にするのではなく、gzipがアクティブである限り常に圧縮されるため、text/htmlをタイプとして指定する必要はありません。
ここで推測しているだけですが、gzipバッファサイズを増やす必要があると思います。
以下は、ブラウザがドメインからプルダウンするファイルです。右側の数字は、ファイルのダウンロードサイズです。
スクリーンショットから判断できない場合もありますが、質問で言及したjsファイルを除き、すべてのテキストコンテンツファイルがgzip圧縮されています。スクリーンショットでは、jsファイルは緑色のファイルで、サイズは約200Kです。このファイルサイズは、gzipバッファに指定したサイズ(128K)よりも大きくなります。
Gzip module docs は、gzipバッファーの用途(非圧縮データと圧縮データのどちらに使用されるか)について適切な指標を提供しません。ただし、次の投稿は、バッファーサイズが圧縮されていないファイルサイズよりも大きい必要があることを示しているようです。 NGINX、GZip、およびSSLを含む大きなファイル
これが私の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だと思います。
Alaaのように、gzip_http_version 1.0;
(以前にバージョンが指定されていなかった)を追加して動作させる必要がありました(Firefox 27.0.0で試しました)。
Alaaと同じ問題が発生しました。この問題は、現在コンピューターにインストールされているウイルス対策ソフトウェアが原因です。
プロキシサーバーとウイルス対策ソフトウェアは、ファイルがクライアントマシンにダウンロードされるときに圧縮を無効にすることができます。そのため、このようなウイルス対策ソフトウェアを使用しているクライアントマシンのブラウザーでWebサイトを実行している場合、または中間プロキシサーバーの背後にあるWebサイトを実行している場合(多くのプロキシは透過的であり、クライアントとウェブサーバー)、この問題の原因である可能性があります。
ウイルス対策を無効にすることでブラウザの問題が解決し、gzip_http_versionを1.0に設定する必要さえありません。
それがあなたを助けることを願っています。