web-dev-qa-db-ja.com

圧縮ブラウザの互換性とGZIPを上回る利点を緩和する


2012年2月10日更新:

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


2010年9月11日更新:

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




背景情報については、GZIPおよびDEFLATE(zlib)のHTTP 1.1定義:

「「Gzip」はgzip形式であり、「deflate」はzlib形式です。生のdeflate圧縮データ形式との混同。HTTP1.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ラッパーなしでRAWデフレートデータを送信する場合(またはgzip、それについて)、生のデフレートを理解できない最新のブラウザ(たとえば、IE6以上、FF、Chrome、Safariなど)圧縮データ(HTTP要求ヘッダー「Accept-Encoding」に「deflate」が含まれていると仮定)?

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

これらすべてのブラウザーがデータを正常にデコードできる場合、zlibの代わりにRAW deflateを送信することのマイナス面は何ですか?



2010年9月11日更新:

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

89
David Murdoch

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


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は許可されません。


私は、常に送信rawDEFLATE(HTTPリクエストヘッダー「Accept-Encoding」には「deflate」が含まれています)、ブラウザはエンコードされたデータを正しく解釈できます。誰かがこれを間違っていると証明できますか?

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

37
David Murdoch

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

6
Josef Pfleger

AddOutputFilterByType DEFLATEデフォルトでmod_deflateを使用してgzipで送信しますか?

1
Paul Irish