GZIPPERTコンテンツがブラウザによってグローキングされない理由
-
18-09-2019 - |
質問
パフォーマンス上の理由で、Gziptedファイルとして静的リソース(CSSおよびJavaScript)を提供しようとしています。
レンダリング時にページがGZIPを使用し、Content-EncodingがLiveHttPheadersによるとGZIPに正しく設定され、最も重要なことは、GZIPTコンテンツがGIDZIPTESTページを渡すことです(http://www.gidnetwork.com/tools/gzip-test.php)大丈夫です。テストからの出力の例は次のとおりです。
Webページが圧縮されましたか?はい
圧縮タイプ? gzip
サイズ、マークアップ(バイト)18,286
サイズ圧縮(バイト)4,427
圧縮%75.8
----
ResponseHeaders
ステータスHTTP/1.0 200 OK
Pragma No-Cache Cache-Control Private、Max-Age = 86500
有効期限、2009年8月24日04:34:14 GMT
X-AMZ-ACL Public-Read
コンテンツタイプのテキスト/CSS
content-md5 hqjatbs3ozdfet/qhsd+ qg ==
コンテンツエンコードGZIP
日付水、2009年8月19日04:34:14 GMT
サーバー - 私のサーバー -
コンテンツレングス4427
コンテンツエンコードヘッダーは大胆で、他のすべてのヘッダーは予想通りです。
テストページには、非圧縮ページソースも表示されます。これは、常に圧縮されていないと予想されているとおりです。ブラウザによってレンダリングされるようにコピーして貼り付けてみました。ページがgziptされ、解凍されていることを認識する実際のステップで。
そして、これはブラウザ固有ではありません。 FF、WebKit、およびIEでは、これらのGZIPTファイルが正しく解凍されていません。私は考えられるすべてを試しましたが、本当に困惑しています。
解決
ファイルをもう一度gzippingしているのは、ほとんどのブラウザと同様に、Accept-EncodingでリストするHTTP 1.1クライアントのみです。 gidziptestはHTTP 1.0リクエストを送信しており、1.0クライアントへのGZIPPIPTIONは、クライアントがサポートするエンコーディングを示すための受け入れエンコードフィールドを持っていないため、2番目のコンプレッサーに意味があるため、クライアントが受け入れエンコードフィールドを持っていないため、リスクが高くなります(1つがある場合は意味があります。 )1.0クライアントにgzipしないでください。その場合、Gidziptestは単一のgzipt応答を取得し、ブラウザはダブルGzip(悪い)応答を取得します。しかし、それは1つの可能性です。まれですが、それは起こります。
そうでない場合は、問題を展示するページにURLのような情報を提供する必要があります。
他のヒント
過去数日間にわたって同様の問題をデバッグしました。私のプロジェクトのすべてのHTML、CSS、およびJSファイルはGZIP'edです。 Firefox 3.5が登場するまで、それは正常に機能しました。 Firefox 3.0およびIE 7+8には問題がありませんでした。ああ、オペラ9+10とクロムもエンコードで窒息しました。
症状はHTMLであり、CSSファイルは正しく認識され、JSファイルのみが問題になっています。 FireBugは私にこのエラーメッセージを与えてくれます:
無効なラベル
コンテンツエンコード:gzip n
私にとっての解決策は、Doctypeを削除することでした。私はゆるくて厳格で、どちらもうまくいきませんでした。しかし、私は適切なDoctypeが何であるかを知りたいです。