Какие браузеры обрабатывают `Content-Encoding: gzip` и какие из них предъявляют особые требования к качеству кодирования?

44

Я создаю «ручной» сервер HTTP 1.0, 1.1. Я недавно интегрировал zip lib, так что теперь я могу передавать и отправлять закодированные данные gziped. Интересно, какие основные браузеры (живые - IE6-IE10, Chrome, FF и т. Д.) Отправляют Accept-Encoding: deflate, gzip, ...и так могут обрабатывать Content-Encoding: gzipсегодня? Какие из них соответствуют ожиданиям качества? Кто из них может отправлять зашифрованный почтовый запрос gziped и данные multypart / form на мой сервер?

user1049847
источник
1
Разве вы не должны полагаться на заголовок Accept-Encoding в любом случае? Или ты просто спрашиваешь из любопытства?
Флимзи
@Flimzy Если вы храните файлы, которые были закодированы заранее (что вы можете сделать, чтобы уменьшить нагрузку на процессор, уменьшить использование дискового пространства, повысить уровень сжатия или потому, что вы обслуживаете файлы с полностью статического сервера) тогда у вас нет особой роскоши придерживаться заголовка Accept-Encoding. Если вы можете подчиняться заголовку, конечно, вы должны, но с учетом практически универсальной поддержки gzip в настоящее время, все в порядке, чтобы ваш сайт требовал поддержки gzip.
Хайден Шифф
1
@haydenschiff Конечно, вы все еще можете почтить заголовок подтверждения. Если вы храните сжатые данные, вы уже готовы разархивировать их, чтобы их обслужить, если этого требует заголовок принятия.
Хлипкий

Ответы:

49

В настоящее время каждый браузер поддерживает deflate / gzip. На этой странице перечислены многие браузеры и номера версий. Вот резюме плюс некоторые новые браузеры:

  • Netscape 6+ (Netscape 4-5 делает, но с некоторыми ошибками).
  • Internet Explorer 5.5+ (июль 2000 г.) и IE 4, если установлен HTTP / 1.1.
  • Опера 5+ (июнь 2000 г.)
  • Рысь 2.6+ (некоторое время до 1999 года)
  • Firefox 0.9.5+ (октябрь 2001 г.)
  • Хром с тех пор навсегда
  • Сафари с незапамятных времен (насколько я могу судить)

Как видите, уже почти 15 лет существует полная поддержка, и никто не использует браузер старше 15 лет.

oezi
источник
1
+1 Я был немного смущен, так как это кажется несуществующей проблемой. @ user1049847 Может быть, вам нужно расширить свой вопрос выше?
Su '
3
И чтобы добавить к этому, ни один браузер не отправит сжатый gzip запрос, но почти все примут сжатый gzip ответ. См. « Почему браузер не может отправить запрос gzip? » В StackOverflow.
Марко Мильтенбург
2
@Su 'прав - любой браузер, поддерживающий gzip , отправит заголовок Accept-Encoding, поэтому вам не нужно заботиться, какие именно браузеры поддерживают это. Отправьте gzip, когда они скажут, что могут его получить.
Рассерженная шлюха
12
Вопрос актуален. Если вы обслуживаете статические файлы из Amazon S3, MS Azure и других (как это делают многие), вы не сможете динамически отвечать на заголовок accept-encoding. Также сжатие на лету создает дополнительную нагрузку на процессор.
QFDev
1
@QFDev, если вы обслуживаете статические файлы, вы можете создать одну версию, которая будет упакована в gzip-формате, и другую, которая не будет, а также проверить accept-encoding / gzip и изменить соответствующие обслуживаемые статические файлы.
JordanReiter