wake-up-neo.com

Kompatibilität und Vorteile des Deflate-Komprimierungsbrowsers gegenüber GZIP


UPDATE 10. Februar 2012:

zOompf hat einige sehr gründliche Untersuchungen zu diesem Thema durchgeführt hier . Es übertrifft alle Ergebnisse unten.


UPDATE 11. September 2010:

Zu diesem Zweck wurde eine Testplattform erstellt hier




HTTP 1.1-Definitionen von GZIP und DEFLATE (zlib) für einige Hintergrundinformationen:

"'Gzip' ist das gzip-Format, und 'deflate' ist das zlib-Format . Sie sollten wahrscheinlich das zweite 'zlib' genannt haben, um dies zu vermeiden Verwechslung mit dem unformatierten deflate-komprimierten Datenformat Während der HTTP 1.1 RFC 2616 korrekt auf die zlib-Spezifikation in RFC 1950 für die 'deflate'-Übertragungscodierung verweist , wurde von Servern und Browsern berichtet, dass unkorrektes Erzeugen oder Erwarten von Deflate-Rohdaten gemäß der Deflate-Spezifikation in RFC 1951, vor allem Microsoft-Produkte. Also, obwohl die 'Deflate'-Übertragungscodierung die zlib verwendet format wäre der effizientere Ansatz ( und tatsächlich genau , für den das zlib-Format entwickelt wurde ) unter Verwendung des Die "gzip" -Übertragungscodierung ist wahrscheinlich zuverlässiger, da die HTTP 1.1-Autoren den Namen nicht richtig gewählt haben. " (Quelle: http://www.gzip.org/zlib/zlib_faq.html )

Meine Frage: Wenn ich RAW-Deflate-Daten ohne zlib-Wrapper (oder gzip) sende, gibt es moderne Browser (z. B. IE6 und höher, FF, Chrome, Safari usw.), die die RAW-Deflate NICHT verstehen komprimierte Daten (unter der Annahme, dass der HTTP-Anforderungsheader "Accept-Encoding" "deflate" enthält)?

Deflate-Daten sind IMMER einige Bytes kleiner als GZIP.

Wenn alle diese Browser die Daten erfolgreich dekodieren können, welche Nachteile hat das Senden von RAW-Deflation anstelle von Zlib?



UPDATE 11. September 2010:

Zu diesem Zweck wurde eine Testplattform erstellt hier

89
David Murdoch

UPDATE: Browser haben die Unterstützung für RAW-Deflate eingestellt. zOompf hat einige sehr gründliche Untersuchungen zu diesem Thema durchgeführt hier . Leider scheint es, dass die Verwendung von Rohdeflat NICHT sicher ist.


Überprüfen Sie http://www.vervestudios.co/projects/compression-tests/results für weitere Ergebnisse.

Hier sind die getesteten Browser:

/*  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 Sendet HTTP-Anforderungsheader "Accept-Encoding: gzip". Deflate ist nicht zulässig.


Ich komme zu dem Schluss, dass wir immer RAW DEFLATE senden können (wenn der HTTP-Request-Header "Accept-Encoding" enthält "deflate") und der Browser kann die codierten Daten korrekt interpretieren. Kann jemand das falsch beweisen?

Anmerkung: .NETs native Implementierung von DEFLATE (System.IO.Compression.DeflateStream) ist RAW DEFLATE. Es ist auch scheiße. Bitte verwenden Sie zlib.net für alle Ihre .NET-Deflationsanforderungen.

37
David Murdoch

Der Android 1.6 Browser (v4) hat sowohl den ZLIB- als auch den Deflate-Test auf Ihrer Seite nicht bestanden. Ich habe ihn Ihrer Liste hinzugefügt.

6
Josef Pfleger

Ist es nicht so, dass AddOutputFilterByType DEFLATE mit mod_deflate wird standardmäßig per gzip gesendet?

1
Paul Irish