Які браузери обробляють `Content-Encoding: gzip` і який з них має якісь особливі вимоги до якості кодування?


44

Я створюю "ручний" сервер HTTP 1.0, 1.1. Нещодавно я інтегрував zip lib, тому тепер я можу передавати кодовані gziped дані в і вийти. Цікаво, які основні веб-переглядачі (живі - IE6-IE10, Chrome, FF тощо) надсилають Accept-Encoding: deflate, gzip, ...і так можуть Content-Encoding: gzipсьогодні працювати ? Хто з них надсилає очікування щодо якості? Хто з них може надсилати на мій сервер кодований gziped поштовий запит та багатопартійні дані / форми?


1
Чи не варто ви все-таки покладатися на заголовок Accept-Encoding? Або ви просто запитуєте з цікавості?
Flimzy

@Flimzy Якщо ви зберігаєте заздалегідь закодовані файли (що ви можете зробити для зменшення завантаження процесора, зменшення використання дискового простору, підвищення рівня стиснення або тому, що ви обслуговуєте файли з повністю статичного сервера) , то у вас насправді немає розкоші дотримуватися заголовка Accept-Encoding. Якщо ви можете підкорятися заголовку, звичайно, вам слід, але враховуючи практично універсальну підтримку gzip в наш час, добре створити свій веб-сайт, щоб вимагати підтримки gzip.
Hayden Schiff

1
@haydenschiff, звичайно, ви все ще можете вшанувати заголовок прийняття. Якщо ви зберігаєте gzipped дані, ви вже готові розпакувати їх для подачі, якщо заголовок прийняття диктує.
Flimzy

Відповіді:


49

В основному кожен браузер на сьогодні підтримує deflate / gzip. На цій сторінці перелічено безліч браузерів та номерів версій. Ось підсумок плюс деякі новіші браузери:

  • Netscape 6+ (Netscape 4-5 робить, але з деякими помилками).
  • Internet Explorer 5.5+ (липень 2000 р.) Та IE 4, якщо встановлено HTTP / 1.1.
  • Opera 5+ (червень 2000 р.)
  • Рись 2.6+ (певний час до 1999 року)
  • Firefox 0.9.5+ (жовтень 2001)
  • Chrome назавжди
  • Сафарі назавжди (наскільки я можу сказати)

Як бачите: майже 15 років існує повна підтримка, і ніхто не користується браузером старше 15 років.


1
+1 Я був дещо розгублений, оскільки це здається неіснуючою проблемою. @ user1049847 можливо, вам потрібно розгорнути своє питання вище?
Су

3
І щоб додати до цього, жоден браузер не надсилатиме gzip-стислий запит, але майже всі приймають стиснуту відповідь gzip. Див. " Чому браузер не може надіслати запит на gzip? " У StackOverflow.
Марко Мільтенбург

2
@Su є правильним - будь-який браузер, який підтримує gzip , надішле заголовок Accept-Encoding, тому вам не потрібно буде дбати, які саме браузери це підтримують. Надішліть gzip, коли вони скажуть вам, що вони можуть його отримати.
НезадоволенняЗакрито

12
Питання актуальне. Якщо ви обслуговуєте статичні файли з Amazon S3, MS Azure та інших (як багато хто), ви не зможете динамічно відповідати на заголовки прийняття-кодування. Також стиснення на льоту сприймає додаткове навантаження на процесор.
QFDev

1
@QFDev, якщо ви розміщуєте статичні файли, ви можете створити одну версію, яка є gzipped та іншу, яка не є, і перевірити наявність accept-кодування / gzip та змінити статичні файли, що подаються відповідно.
JordanReiter
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.