AKTUALIZACJA 10 lutego 2012:
zOompf zrealizowała kilka bardzo dokładnych badań na ten sam temat tutaj . Przeważa to wszystkie poniższe ustalenia.
AKTUALIZACJA 11 września 2010:
Platforma testowania został stworzony dla tego tutaj
Definicje HTTP 1.1 GZIP i DEFLATE (zlib), aby uzyskać dodatkowe informacje:
„„ Gzip ”to format gzip, a „ deflate ”to format zlib . Prawdopodobnie powinni zamiast tego nazwać drugi format „ zlib ”, aby uniknąć nieporozumień z formatem danych skompresowanych danych surowych deflate. Chociaż protokół HTTP 1.1 RFC 2616 prawidłowo wskazuje na specyfikacji zlib w RFC 1950 dla kodowania transferu „deflate”, pojawiły się doniesienia o serwerach i przeglądarkach, które niepoprawnie wytwarzają lub oczekują nieprzetworzonych danych deflate zgodnie ze specyfikacją deflate w RFC 1951, w szczególności w produktach firmy Microsoft . Tak więc, nawet jeśli „deflate” przesyłanie kodowania przy użyciu formatu zlib byłoby bardziej wydajnym podejściem ( i właściwie do czego został zaprojektowany format zlib), użycie kodowania transferu „gzip” jest prawdopodobnie bardziej niezawodne ze względu na niefortunny wybór nazwiska ze strony autorów HTTP 1.1. ”(źródło: http://www.gzip.org/zlib/zlib_faq.html )
Więc, moje pytanie: jeśli wyślę dane RAW deflate BEZ opakowania zlib (lub gzip, jeśli o to chodzi), czy są jakieś nowoczesne przeglądarki (np. IE6 i nowsze, FF, Chrome, Safari itp.), Które NIE mogą zrozumieć surowego deflatu skompresowane dane (zakładając, że nagłówek żądania HTTP „Accept-Encoding” zawiera „deflate”)?
Dane opróżnione będą ZAWSZE o kilka bajtów mniejsze niż GZIP.
Jeśli wszystkie te przeglądarki mogą pomyślnie dekodować dane, jakie są wady wysyłania deflate RAW zamiast zlib?
AKTUALIZACJA 11 września 2010:
Platforma testowania został stworzony dla tego tutaj
źródło
Odpowiedzi:
AKTUALIZACJA: przeglądarki przestały obsługiwać nieprzetworzone opróżnianie. zOompf zrealizowała kilka bardzo dokładnych badań na ten sam temat tutaj . Niestety wygląda na to, że surowy deflat NIE jest bezpieczny w użyciu.
Sprawdzić http://www.vervestudios.co/projects/compression-tests/results więcej wyników.Oto przetestowane przeglądarki:* Android wysyła nagłówek żądania HTTP „Accept-Encoding: gzip”. Opróżnianie nie jest dozwolone.
Wnioskuję, że zawsze możemy wysłać nieprzetworzone DEFLATE (gdy nagłówek żądania HTTP „Accept-Encoding” zawiera „deflate”), a przeglądarka będzie mogła poprawnie zinterpretować zakodowane dane. Czy ktoś może to udowodnić?
Uwaga: natywna implementacja DEFLATE (System.IO.Compression.DeflateStream) w .NET to surowy DEFLATE. To też jest do bani. Proszę używać zlib.net do wszystkich potrzeb związanych z deflacją .NET.źródło
Przeglądarka systemu Android 1.6 (v4) nie przechodzi testu zlib i deflate na Twojej stronie. Dodałem to do twojej listy.
źródło
Czy nie jest tak, że
AddOutputFilterByType DEFLATE
użycie mod_deflate domyślnie wysyła przez gzip?źródło
AddOutputFilertByType DEFLATE
gzipuje odpowiedź zamiast domyślnie ją opróżniać (o ile wiem).Gzip
todeflate
+ 10-bajtowy nagłówek + 8-bajtowa stopka - co oznacza, żeGzip
ZAWSZE będzie większe niżdeflate
... więc dlaczego mielibyśmy kiedykolwiek używać programu gzip? (zobacz en.wikipedia.org/wiki/Gzip#File_format, aby dowiedzieć się, z czego składa się gzip). Mając todeflate
na uwadze , nie jestem pewien, jak ustawić jako preferowaną metodę kompresji w Apache.o ile wiem, tak - prawie zawsze można wysłać surowy DEFLATE i wszystko byłoby w porządku… nie jest „zawsze”, ale w większości przypadków. jeśli nie, jest to problem przeglądarki.
źródło
deflate
(tj. Nie zlib , bez nagłówków) będzie działać tylko w IE7, jeśliencoding:gzip
i (testowane tylko w chrome v24)encoding:deflate
w chrome .