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 75% objętości
  • wszelkie pochodne szybszego działania stron, sklepów i aplikacji internetowych
  • lepsze wyniki we wszelkiego automatycznych analizatorach optymalizacji SEO

Instalacja i włączenie modułu GZIP na serwerze

Jeżeli nie posiadamy hostingu wirtualnego, który pozwala skorzystać z GZIP moduł ten należy włączyć samodzielnie (o ile mamy dostęp do systemu operacyjnego w ramach serwera dedykowanego lub VPS).

sudo a2enmod deflate

Zamiast dodawać komendy do .htaccess, można od razu w pliku konfiguracyjnym Apache dodać komendy odpowiedzialne za kompresję:

AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript

Testowanie kompresji GZIP/deflate

Poprawne działanie modułu GZIP możemy zweryfikować analizując odpowiedzi serwera, ale można też użyć przyjaznych narzędzi testujących dostępnych online, takich jak: varvy.com/tools/gzip/

Jak widać, mimo tego, że moja strona nie jest skomplikowana, kompresja GZIP pozwoliła zaoszczędzić 70% jej rozmiaru. Proszę teraz pomyśleć, jak znaczne przyspieszenie można uzyskać w przypadku bardziej rozbudowanych serwisów.

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ć? GZIP czy deflate – jak włączyć i co wybrać? 4.5 na 5 na podstawie 15 ocen GZIP czy deflate – jak włączyć i co wybrać?


Komentarze

Brak komentarzy.

Dodaj swój komentarz