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