Совместимость с браузером сжатия Deflate и преимущества перед GZIP


обновление 10 февраля 2012:

zOompf завершил некоторые очень тщательные исследования по этой теме здесь. Это превосходит любые выводы ниже.


обновление 11 сентября 2010:

для этого создана тестовая платформа здесь




HTTP 1.1 определения GZIP и DEFLATE( zlib) для некоторой справочной информации:

"'Gzip' - это gzip формат, и 'deflate' - это формат zlib. Они вероятно, следовало назвать второй "zlib", чтобы избежать путаница с raw deflate сжатый формат данных. В то время как HTTP 1.1 в документе RFC 2616 правильно указывает в спецификации zlib в документе RFC 1950 для кодировки передачи "deflate",были сообщения о серверы и браузеры, которые неправильно производят или ожидают raw deflate данные по спецификации deflate в RFC 1951,особенно Microsoft продукты. Поэтому, даже если кодировка передачи "deflate" использует формат zlib будет более эффективным подходом (и на самом деле именно для чего был разработан формат zlib), используя передачу 'gzip' кодирование, вероятно, более надежно из-за неудачного выбора имя со стороны авторов HTTP 1.1."(источник: http://www.gzip.org/zlib/zlib_faq.html)

Итак, мой вопрос: если я отправлю необработанные данные дефляции с Нет оболочки zlib (или gzip, если на то пошло) есть ли какие-либо современные браузеры (например, IE6 и выше, FF, Chrome, Safari и т. д.), которые не могут понять необработанный дефлировать сжатые данные (предполагая, что заголовок HTTP-запроса "Accept-Encoding" содержит "deflate")?

Deflate данные всегда будут на несколько байтов меньше, чем GZIP.

Если все эти браузеры могут успешно декодировать данные, что недостатки там для отправки сырцового выкачивают вместо с zlib?



обновление 11 сентября 2010:

для этого создана тестовая платформа здесь

4 ответов


UPDATE: браузеры сбрасывают поддержку raw deflate. zOompf завершил некоторые очень тщательные исследования по этой теме здесь. к сожалению, кажется, что сырой выкачать не безопасно использовать.


Регистрация 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". Сдувать не разрешается.


Я заключаю, что мы можем всегда отправлять raw сдуется (когда заголовок HTTP-запроса " Accept-Encoding "содержит" deflate"), и браузер сможет правильно интерпретировать закодированные данные. Кто-нибудь может доказать, что это не так?

Примечание: собственная реализация DEFLATE .NET (Система.ИО.Сжатие.DeflateStream) является сырым ДЕФЛЯТОМ. Это тоже отстой. Пожалуйста, используйте zlib.net для всех ваших потребностей .NET выкачивания.


браузер Android 1.6 (v4) терпит неудачу как в zlib, так и в тесте deflate на Вашей странице. Я добавил его в свой список.


Не то AddOutputFilterByType DEFLATE с помощью mod_deflate отправляет с помощью функций gzip по умолчанию?


насколько я знаю, да-в значительной степени вы "всегда можете отправить сырой ДЕФЛЯТ, и все будет в порядке"... есть не "всегда", а чаще всего случаи. если нет, это проблема браузера.