it-swarm.com.ru

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


ОБНОВЛЕНИЕ 10 февраля 2012:

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


ОБНОВЛЕНИЕ 11 сентября 2010:

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




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

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

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

Данные Deflate ВСЕГДА будут на несколько байтов меньше, чем GZIP.

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



ОБНОВЛЕНИЕ 11 сентября 2010:

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

89
David Murdoch

ОБНОВЛЕНИЕ: Браузеры перестали поддерживать сырой дефлат. 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". Выкачивание не допускается.


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

примечание: собственная реализация .NET для DEFLATE (System.IO.Compression.DeflateStream) является необработанной DEFLATE. Это тоже отстой. Пожалуйста, используйте zlib.net для всех ваших .NET дефлятирующих потребностей.

37
David Murdoch

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

6
Josef Pfleger

Разве это не тот случай, когда AddOutputFilterByType DEFLATE с помощью mod_deflate отправляет gzip по умолчанию?

1
Paul Irish