Почему в реальном мире сервера предпочитаете и gzip за сдуваться кодирования?


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

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

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

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

6 60

6 ответов:

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

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

но 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.)

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

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

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

из моего минимального тестирования кажется, что большинство HTTPds либо:

  1. не поддерживайте deflate on-the-fly: Apache mod_deflate (сюрприз), GWS
  2. или предпочитаете, чтобы отправить с помощью gzip: ИИС mod_compress

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

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

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


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

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

Я исследовал тему немного, и это выглядит безопасным, чтобы всегда отправлять raw выкачать в современных браузерах...просто убедитесь, что это, на самом деле,raw а не zlib.

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

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

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

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

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