Які браузери обробляють `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.