Web Design Blog / Hosting:

GZIP czy deflate – jak włączyć i co wybrać?

Data publikacji: 12 grudnia 2018

Zarówno GZIP jak i deflate są dwoma alternatywnymi modułami do Apache, które są w stanie kompresować transmitowane przez internet dane.

Mamy do czynienia z danymi dlatego kompresja jest oczywiscie bezstratna i w ramach ciekawostki wspomnę, że oba bazują na algorytmie deflate, który służy też do kompresji grafiki w formacie PNG. Czytaj więcej o optymalizacji grafiki dla potrzeb WWW. Co z tego wynika? A no fakt, że oba moduły kompresują z wręcz identyczną skutecznością. Zakodowane przez mod_deflate i mod_gzip zajmują praktycznie tyle samo miejsca i proces kompresji i dekompresji ma tę samą złożoność.

Jak działa kompresja deflate?

Kompresja deflate oparta jest o dwa etapy kompresji. W pierwszym etapie wykorzystuje się metodę LZ77 czyli strumieniową słownikową kompresję danych. Metoda ta wykorzystuje powtarzające się sekwencje w ciągach bajtów. Jeżeli jakieś wyrażenie występuje kilkakrotnie w danym pliku, algorytm tworzy słownik na zasadzie klucz-wartość a potem podmienia wszystkie wystąpienia wartości na o wiele krótszy klucz. Drugi i ostatni etap (jak wiele innych systemów kompresji danych) korzysta z algorytmu Huffmana, który jeszcze kiedyś opiszę a na ten moment załączam link do źródeł.

Serwer kompresuje te dane w niewidoczny sposób podczas transmisji. Przeglądarka odbierająca je – dekompresuje.

Włączenie mod_gzip w .htaccess:

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

Włączenie mod_deflate w .htaccess:

<ifModule mod_deflate.c> <filesMatch "\.(js|css)$"> SetOutputFilter DEFLATE </filesMatch> </ifModule>

Zalety stosowania mod_gzip/mod_deflate

  • mniejsza objętość transmitowanych danych – może dochodzić do zaoszczędzenia ponad 90% objętości
  • wszelkie pochodne szybszego działania stron, sklepów i aplikacji internetowych
  • lepsze wyniki we wszelkiego automatycznych analizatorach optymalizacji SEO

Co wybrać i czego nie kompresować?

Moduł deflate jest „nowszy”, częściej zalecany i dystrybuowany w oryginalnym Apache. Dlatego warto wyrobić nawyk stosowania instrukcji mod_deflate, które częściej będą działać w różnego rodzaju usługach hostingowych. Instrukcje włączające mod_gzip stosujemy wtedy, jeżeli z jakichś powodów instrukcje dla mod_deflate nie działają.

Nie należy kompresować już wcześniej skompresowanych danych, czyli np. .rar, .zip, .jpeg, .jpg i .png. Tutaj nie zaobserwujemy żadnego korzystnego wpływu kompresji, ponieważ skompresowanych danych innym algorytmem nie da się efektywnie „dokompresować” innym. Paradoksalnie może dojść do efektu odwrotnego – dane będą zajmować więcej miejsca po dwóch takich operacjach. Drugim minusem jest niepotrzebne obciążenie serwera, który niepotrzebnie będzie te dane próbował kompresować.

Źródła:

https://httpd.apache.org/docs/2.4/mod/mod_deflate.html

https://pl.wikipedia.org/wiki/Kodowanie_Huffmana

GZIP czy deflate – jak włączyć i co wybrać?
4.6 (92.31%) głosów: 13


Komentarze

Brak komentarzy.

Dodaj swój komentarz