gzip - kompresja plików po stronie serweraMetod na przyspieszenie strony jest co najmniej kilkanaście. Najbardziej oczywistą wydaje się być kompresja. Ta ma wiele wariantów. Można kompresować kod, minimalizując liczbę instrukcji czy usuwając powielone fragmenty. Takie podejście opisałem we wpisie dotyczącym kompresji JavaScript i CSS. Można także kompresować grafikę i elementy multimedialne. Można – wreszcie – kompresować pliki po stronie serwera.

GZIP – czy warto?

Kod HTML, CSS, JavaScript i jakikolwiek inny kod sztucznego języka jest doskonałym materiałem do kompresji. Wszystko przez powtarzające się ciągi (znaczniki HTML, słowa kluczowe np. function), które łatwo poddają się kompresji. Kompresja rzędu 50% nie jest niczym nadzwyczajnym. To dwa razy szybsze wczytywanie strony. To dwa razy mniejsze zużycie transferu!

Obsługa GZIP przez przeglądarkę

Jeżeli nasz serwer ma przesyłać skompresowane pliki, przeglądarka musi się na to zgodzić. To, czy serwer prześle pliki spakowane GZIP-em, zależy od nagłówka otrzymanego przez przeglądarkę. W założeniu:

  • przeglądarka wysyła żądanie GET z nagłówkiem Accept-Encoding: gzip, deflate
  • serwer sprawdza czy kompresja jest dostępna i czy żądany zasób (plik) istnieje
  • serwer kompresuje plik i odsyła do klienta
  • przeglądarka dekompresuje stronę i wyświetla ją użytkownikowi

GZIP – jak to włączyć?

Apache posiada dwa moduły kompresujące pliki – mod_gzip i mod_deflate. Skorzystamy z tego drugiego, który jest łatwiejszy w konfiguracji. Odszukaj plik .htaccess w głównym folderze swojej strony i skopiuj do niego:
# kompresja plikow tekstowych, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Voila!

A co z kompresją grafiki?

Dlaczego kompresujemy tylko tekst? Do tego gzip nadaje się najlepiej. Pliki multimediów i grafiki powinny być skompresowane przed umieszczeniem na serwerze.

Używasz kompresji na stronie? Znasz inne, lepsze sposoby na zwiększenie wydajności strony? Podziel się nimi w komentarzu!