91

2012 年 2 月 10 日更新:

zOompf は、まさにこのトピックに関する非常に徹底的な調査を完了しました。これは、以下の調査結果よりも優先されます。


2010 年 9 月 11 日更新:

このためのテスト プラットフォームが作成されました。




背景情報については、GZIP および DEFLATE (zlib) の HTTP 1.1 定義を参照してください。

「「Gzip」は gzip 形式で、「deflate」は zlib 形式です。生の deflate 圧縮データ形式との混同を避けるために、おそらく 2 番目のものを「zlib」と呼ぶべきでした。HTTP 1.1 RFC 2616 は正しく「deflate」転送エンコーディングに関する RFC 1950 の zlib 仕様に基づいているため、RFC 1951 の deflate 仕様に従って生の deflate データを誤って生成または予期するサーバーとブラウザの報告があり、最も顕著なのは Microsoft 製品です。 zlib 形式を使用した転送エンコーディングは、より効率的なアプローチになります (実際 、zlib 形式が設計された目的はまさにそれです)。)、「gzip」転送エンコーディングを使用する方が、HTTP 1.1 作成者側の不幸な名前の選択により、おそらくより信頼性が高くなります。" (ソース: http://www.gzip.org/zlib/zlib_faq.html )

それで、私の質問: zlib ラッパー (または gzip など) なしで RAW deflate データを送信した場合、生の deflate を理解できない最新のブラウザー (IE6 以降、FF、Chrome、Safari など) はありますか?圧縮データ (HTTP 要求ヘッダー「Accept-Encoding」に「deflate」が含まれていると仮定)?

Deflate データは常に GZIP よりも数バイト小さくなります。

これらすべてのブラウザーがデータを正常にデコードできる場合、zlib の代わりに RAW deflate を送信することにはどのような欠点がありますか?



2010 年 9 月 11 日更新:

このためのテスト プラットフォームが作成されました。

4

4 に答える 4

37

更新: ブラウザーは raw deflate のサポートを終了しています。zOompf は、まさにこのトピックに関する非常に徹底的な調査を完了しました残念ながら、raw deflate は安全に使用できないようです。


その他の結果については、http://www.vervestudios.co/projects/compression-tests/resultsを確認してください。

テスト済みのブラウザは次のとおりです。

/*  Browser                       DEFLATE      ZLIB     */
    XP Internet Explorer 6        PASS         FAIL
    XP Internet Explorer 7        PASS         FAIL
    XP Internet Explorer 8        PASS         FAIL
    Vista Internet Explorer 8     PASS         FAIL
    XP Firefox 3.6.*              PASS         PASS
    XP Firefox 3.5.3              PASS         PASS
    XP Firefox 3.0.14             PASS         PASS
    Win 7 Firefox 3.6.*           PASS         PASS
    Vista Firefox 3.6.*           PASS         PASS
    Vista Firefox 3.5.3           PASS         PASS
    XP Safari 3                   PASS         PASS
    XP Safari 4                   PASS         PASS     
    XP Chrome 3.0.195.27          PASS         PASS
    XP Opera 9                    PASS         PASS
    XP Opera 10                   PASS         PASS
    XP Sea Monkey 1.1.8           PASS         PASS
    Android 1.6 Browser (v4)*     N/A          N/A
    OS-X Safari 4                 PASS         PASS
    OS X Chrome 7.0.517.44        PASS         PASS
    OS X Opera 10.63              PASS         PASS
    iPhone 3.1 Safari             PASS         PASS

* Android は HTTP リクエスト ヘッダー「Accept-Encoding: gzip」を送信します。収縮は許可されていません。


いつでも未加工のDEFLATEを送信でき(HTTP 要求ヘッダーの "Accept-Encoding" に "deflate" が含まれている場合)、ブラウザーはエンコードされたデータを正しく解釈できる と結論付けています。誰かがこれが間違っていることを証明できますか?

注: .NET の DEFLATE のネイティブ実装 (System.IO.Compression.DeflateStream) は未加工の DEFLATE です。それはまた吸う。.NET デフレートのすべてのニーズにzlib.netを使用してください。

于 2011-03-03T20:29:26.280 に答える
6

Android 1.6 ブラウザー (v4) は、ページの zlib テストと deflate テストの両方に失敗します。あなたのリストに追加しました。

于 2009-10-22T07:06:45.837 に答える
1

AddOutputFilterByType DEFLATEmod_deflate を使用すると、デフォルトで gzip で送信されるということはありませんか?

于 2010-08-26T17:48:51.120 に答える