Dlaczego warto używać deflate zamiast gzip dla plików tekstowych obsługiwanych przez Apache?

Jakie korzyści oferują obie metody dla plików html, css i javascript obsługiwanych przez serwer LAMP. Czy istnieją lepsze alternatywy?

Serwer dostarcza informacje do aplikacji mapowej za pomocą Json, więc duża ilość małych plików.

Zobacz także Czy Jest jakiś hit wydajności związany z wyborem gzip zamiast deflate dla kompresji http?

Author: Community, 2008-12-23

9 answers

Dlaczego używać deflate zamiast gzip dla plików tekstowych obsługiwanych przez Apache?

Prosta odpowiedź to nie .


RFC 2616 definiuje deflate jako:

Deflate formatu" zlib "zdefiniowanego w RFC 1950 w połączeniu z mechanizmem kompresji "deflate" opisanym w RFC 1951

Format zlib jest zdefiniowany w RFC 1950 jako:

     0   1
     +---+---+
     |CMF|FLG|   (more-->)
     +---+---+

       0   1   2   3
     +---+---+---+---+
     |     DICTID    |   (more-->)
     +---+---+---+---+

     +=====================+---+---+---+---+
     |...compressed data...|    ADLER32    |
     +=====================+---+---+---+---+

Więc kilka nagłówków i suma kontrolna ADLER32

RFC 2616 definiuje gzip as:

Gzip format kodowania wytwarzany przez program do kompresji plików "GZIP" (GNU zip) opisany w RFC 1952 [25]. Ten format jest Kodowanie Lempel-Ziv (LZ77) z 32-bitowym CRC.

RFC 1952 definiuje skompresowane dane jako:

Format obecnie wykorzystuje metodę kompresji DEFLATE, ale można go łatwo rozszerzyć o inne metody kompresji.

CRC-32 jest wolniejszy niż ADLER32

W porównaniu do cyklicznej kontroli nadmiarowości o tej samej długości, wymienia niezawodność na szybkość(preferując tę ostatnią).

Więc ... mamy dwa mechanizmy kompresji, które używają tego samego algorytmudo kompresji, ale innego algorytmu do nagłówków i sum kontrolnych.

Teraz, podstawowe pakiety TCP są już dość wiarygodne , więc problem tutaj nie jest Adler 32 vs CRC-32 że GZIP zastosowania.


Okazuje się, że wiele przeglądarek na przestrzeni lat wdrożyło nieprawidłowy algorytm deflate. Zamiast oczekiwać nagłówka Zlib w RFC 1950, po prostu oczekiwali skompresowanego ładunku użytecznego. Podobnie różne serwery www popełniły ten sam błąd.

Tak więc, z biegiem lat przeglądarki zaczęły implementować implementacjęFuzzy logic deflate, starają się o nagłówek Zlib i sumę kontrolną Adlera, jeśli to się nie powiedzie, próbują o ładunek.

Wynik posiadania takiej skomplikowanej logiki jest to, że jest często łamane. Verve Studio ma sekcję, która pokazuje, jak zła jest sytuacja.

Na przykład: deflate działa w Safari 4.0, ale jest zepsuty w Safari 5.1, zawsze ma problemy z IE.


Najlepiej więc całkowicie unikać deflacji, niewielki wzrost prędkości (dzięki adler 32)nie jest wart ryzyka uszkodzonych ładunków.

 290
Author: Sam Saffron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-25 00:25:11

GZip jest po prostu deflate plus suma kontrolna i Nagłówek/Stopka. Deflate jest szybszy , chociaż, ponieważ nauczyłem się ciężko.

gzip vs deflate graph

 163
Author: Jeff Atwood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 14:09:30

Prawdopodobnie nie jesteś w stanie wybrać opcji deflate. W przeciwieństwie do tego, czego można się spodziewać mod_deflate {[2] } nie używa deflate, ale gzip. Tak więc, chociaż większość przedstawionych punktów jest ważna, prawdopodobnie nie ma znaczenia dla większości.

 13
Author: Amblyopius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-12 11:06:47

Głównym powodem jest to, że deflate jest szybszy do kodowania niż gzip i na zajętym serwerze, który może coś zmienić. W przypadku stron statycznych jest to inne pytanie, ponieważ można je łatwo wstępnie skompresować raz.

 3
Author: Joachim Sauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-23 10:54:31

Myślę, że nie ma dużej różnicy między deflate i gzip, ponieważ gzip w zasadzie jest tylko nagłówkiem owiniętym wokół deflate(patrz RFCs 1951 i 1952).

 3
Author: schnaader,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-23 10:56:58

Mod_deflate wymaga mniej zasobów na twoim serwerze, chociaż możesz zapłacić niewielką karę w zakresie ilości kompresji.

Jeśli obsługujesz wiele małych plików, polecam testowanie porównawcze i ładowanie Twoich skompresowanych i nieskompresowanych rozwiązań - możesz znaleźć przypadki, w których włączenie kompresji nie spowoduje oszczędności.

 1
Author: Dave R.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-23 11:05:46

Nie powinno być żadnej różnicy w gzip & deflate dla dekompresji. Gzip jest po prostu deflate z kilkudziesięciobajtowym nagłówkiem owiniętym wokół niego, w tym sumą kontrolną. Suma kontrolna jest powodem wolniejszej kompresji. Jednak gdy wstępnie kompresujesz miliony plików, chcesz, aby te sumy kontrolne były sprawdzane w systemie plików. Ponadto możesz użyć narzędzi wiersza poleceń, aby uzyskać statystyki pliku. Dla naszej strony prekompresujemy mnóstwo statycznych danych (cały otwarty katalog, 13 000 gier, autouzupełnianie milionów słów kluczowych itp.) i jesteśmy w rankingu 95% szybciej niż wszystkie strony przez Alexa. Faxo Search . Jednak korzystamy z domowego zastrzeżonego serwera www. Apache / mod_deflate po prostu tego nie wyciął. Gdy te pliki są kompresowane do systemu plików, nie tylko bierzesz cios dla pliku z minimalnym rozmiarem bloku plików, ale wszystkie niepotrzebne koszty ogólne w zarządzaniu plikiem w systemie plików, które serwer internetowy może mniej dbać o. Twoje obawy powinny być całkowity ślad dysku i czas dostępu/dekompresji i wtórnie szybkość w stanie uzyskać te dane wstępnie skompresowane. Footprint jest ważny, ponieważ nawet jeśli miejsce na dysku jest tanie, chcesz jak najwięcej zmieścić się w pamięci podręcznej.

 0
Author: Steven,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-20 17:17:04

Dzięki temu, że nie musisz się martwić o swoje bezpieczeństwo, nie musisz martwić się o bezpieczeństwo swoich danych osobowych, a także o bezpieczeństwo Twoich danych osobowych.]}

a2enmod deflate
/etc/init.d/apache2 force-reload
I jesteś daleko! Znalazłem strony, które obsługiwałem przez moje połączenie adsl ładowane znacznie szybciej.

Edit: zgodnie z komentarzem @ GertvandenBerg, umożliwia to kompresję gzip, a nie deflację.

 -1
Author: aidan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-23 01:34:32

Jeśli dobrze pamiętam

  • gzip skompresuje trochę więcej niż deflate
  • Deflate jest bardziej wydajny]}
 -4
Author: JimmyJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-23 10:56:34