Które przeglądarki obsługują `Content-Encoding: gzip`, a która z nich ma specjalne wymagania dotyczące jakości kodowania?

44

Tworzę „ręcznie wykonany” serwer HTTP 1.0, 1.1. Niedawno zintegrowałem zip lib, dzięki czemu mogę teraz przesyłać strumieniowo zakodowane dane gzip. Zastanawiam się, które główne przeglądarki (żywe - IE6-IE10, Chrome, FF itp.) Wysyłają, Accept-Encoding: deflate, gzip, ...a więc mogą obsługiwać Content-Encoding: gzipdzisiaj? Które z nich wysyłają jakieś oczekiwania jakościowe? Który z nich może wysyłać zakodowane żądania pocztą gziped i dane multypart / form na mój serwer?

użytkownik1049847
źródło
1
Czy i tak nie powinieneś polegać na nagłówku Accept-Encoding? A może po prostu pytasz z ciekawości?
Flimzy
@Flimzy Jeśli przechowujesz pliki, które zostały wcześniej zakodowane (co możesz zrobić, aby zmniejszyć obciążenie procesora, zmniejszyć wykorzystanie miejsca na dysku, zwiększyć poziom kompresji lub ponieważ serwujesz pliki z całkowicie statycznego serwera) , to tak naprawdę nie masz luksusu, aby stosować się do nagłówka Accept-Encoding. Jeśli możesz zastosować się do nagłówka, oczywiście powinieneś, ale biorąc pod uwagę praktycznie uniwersalne wsparcie dla gzip w dzisiejszych czasach, możesz zbudować swoją stronę internetową, aby wymagała wsparcia gzip.
Hayden Schiff
1
@haydenschiff oczywiście możesz nadal honorować nagłówek accept. Jeśli przechowujesz spakowane dane, jesteś już przygotowany do rozpakowania ich w celu wyświetlenia, jeśli nakazuje to nagłówek accept.
Flimzy

Odpowiedzi:

49

Zasadniczo każda przeglądarka obecnie obsługuje deflate / gzip. Ta strona zawiera wiele przeglądarek i numerów wersji. Oto podsumowanie plus niektóre nowsze przeglądarki:

  • Netscape 6+ (Netscape 4-5 działa, ale z pewnymi błędami).
  • Internet Explorer 5.5+ (lipiec 2000) i IE 4, jeśli jest ustawiony na HTTP / 1.1.
  • Opera 5+ (czerwiec 2000)
  • Lynx 2.6+ (jakiś czas przed 1999)
  • Firefox 0.9.5+ (październik 2001)
  • Chrome od zawsze
  • Safari od zawsze (o ile wiem)

Jak widać: od prawie 15 lat istnieje pełne wsparcie i nikt nie używa przeglądarki starszej niż 15 lat.

oezi
źródło
1
+1 Byłem trochę zdezorientowany, ponieważ wydaje się, że to nieistniejący problem. @ user1049847 może potrzebujesz rozszerzyć swoje pytanie powyżej?
Su '19
3
Aby dodać do tego, żadna przeglądarka nie wyśle ​​skompresowanego żądania gzip, ale prawie wszystkie akceptują odpowiedź skompresowaną gzip. Zobacz „ Dlaczego przeglądarka nie może wysłać żądania gzip? ” Na StackOverflow.
Marco Miltenburg,
2
@Su ma rację - każda przeglądarka obsługująca gzip wyśle ​​nagłówek Accept-Encoding, więc nie musisz się przejmować, które przeglądarki to obsługują. Wyślij gzip, gdy powiedzą ci, że mogą go otrzymać.
DisgruntledGoat
12
Pytanie jest istotne. Jeśli serwujesz pliki statyczne z Amazon S3, MS Azure i innych (jak wielu), nie będziesz w stanie dynamicznie reagować na nagłówek akceptowania kodowania. Również kompresja w locie powoduje dodatkowe obciążenie procesora.
QFDev
1
@QFDev, jeśli podajesz pliki statyczne, możesz utworzyć jedną wersję, która jest gzip, a drugą, która nie jest, i sprawdzić akceptację kodowania / gzip i odpowiednio zmienić obsługiwane pliki statyczne.
JordanReiter