Подтвердить что ты не робот

Почему серверы реального мира предпочитают кодирование gzip для дефляции?

Мы уже знаем, что deflate encoding является победителем по сравнению с gzip относительно скорости кодирования, декодирования и размера сжатия.

Итак, почему нет больших сайтов (которые я могу найти) отправить его (когда я использую браузер, который его принимает)?

Yahoo утверждает, что deflate "менее эффективен" . Почему?

Я поддерживаю программное обеспечение HTTP-сервера, которое предпочитает deflate, поэтому я хотел бы знать, есть ли какая-то действительно хорошая причина не продолжать это делать.

4b9b3361

Ответ 1

Существует некоторая путаница в отношении именования между спецификациями и HTTP:

  • DEFLATE, как определено RFC 1951 - это сжатый формат данных.
  • ZLIB, как определено RFC 1950 - это сжатый формат данных, который использует формат данных DEFLATE.
  • GZIP, как определено RFC 1952 - это формат , который использует сжатый формат данных DEFLATE.

Но HTTP использует другое название:

  • gzip Формат кодировки, созданный программой сжатия файлов "gzip" (GNU zip), как описано в RFC 1952 [25]. Этот формат представляет собой кодирование Lempel-Ziv (LZ77) с 32-битным CRC.

  • deflate Формат "zlib", определенный в RFC 1950 [31], в сочетании с механизмом сжатия "спуска", описанным в RFC 1951 [29].

Итак, подведем итог:

  • gzip - это формат файла GZIP.
  • deflate - фактически формат данных ZLIB. (Но некоторые клиенты также принимают фактический формат данных DEFLATE для deflate.)

См. также этот ответ на вопрос. Какая разница между кодировками "gzip" и "deflate" HTTP 1.1?:

Какая разница между кодировками "gzip" и "deflate" HTTP 1.1?

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

Ответ 2

Из моего минимального тестирования это выглядит как большинство HTTPds:

  • не поддерживают дефляцию "на лету": Apache mod_deflate (suprise), GWS
  • или предпочитаем отправлять gzip: IIS, lighttpd mod_compress

Итак, чтобы отправить deflate на самый популярный сервер (Apache), вы должны поддерживать предварительно закодированные файлы и использовать mod_negotiate (возможно, вам даже придется использовать карты типов, чтобы предпочесть дефляцию).

Я бы предположил, из-за этой проблемы дефляция редко используется, и поэтому ошибки чаще всего существуют в поддержке сбрасывания клиентов, чем в поддержке gzip.

Ответ 3

Проверьте этот веб-сайт для получения дополнительной информации: http://web.archive.org/web/20120321182910/http://www.vervestudios.co/projects/compression-tests


Deflate, per spec, фактически zlib (формат сжатия, разработанный специально для потоковой передачи контента через Интернет)... который является оберткой вокруг дефлята.

Internet Explorer, однако, неправильно использует HTTP 1.1 deflate (zlib) в качестве исходного дефлята. Поэтому, если ваш сервер отправляет корректный HTTP 1.1 deflate (zlib) контент в IE, он задыхается.

Я немного исследовал эту тему, и она выглядит безопасно ВСЕГДА посылать сырые дефлаты в современные браузеры... просто убедитесь, что это, по сути, raw, а не zlib.

Проверьте эту статью за дополнительной информацией > Пересмотренный Gzip vs Deflate (zlib).

Итак, я думаю, что есть веская причина, чтобы продолжить отправку дефлятора над gzip.

Ответ 4

Насколько я знаю (отказ от ответственности: и я не эксперт здесь, только то, что я слышал), gzip использует тот же алгоритм, что и deflate, но имеет больше заголовков, которые заставляют его иметь больший размер (относительно deflate). Однако, я думаю, deflate поддерживается меньшим количеством клиентов и прокси.

Ответ 5

Я тоже задавался вопросом:). Я думаю, что это может быть связано с совместимостью старых (возможно, древних) браузеров. Я где-то читал, что более старые браузеры, скорее всего, ползут в дефлированном контенте, который mod_gzipped в некоторых случаях (?), Но googling это привело меня к выводу, что, вероятно, лучше всего прекратить поиски в Интернете.

Ответ 6

ActionScript 3 имеет встроенную поддержку deflate, но для gzip вам нужно использовать внешнюю библиотеку