Kompresja – gzip
Wprowadzenie
Szybkość wczytywania stron w znacznym stopniu możemy przyspieszyć korzystając z kompresji. Jako webdeveloperzy nie mamy wpływu na szybkość połączenia czy trasę jaka musza pokonać pakiety pomiędzy serwerem www a osoba odwiedzającą stronę. Możemy jednak, przyspieszyć ten proces poprzez zmniejszenie rozmiaru danych które zostają wysłane.
Począwszy od HTTP/1.1 przeglądarki internetowe obsługują kompresje poprzez nagłówek Accept-Encoding
Accept-Encoding: gzip, deflate
Jeśli serwer www zobaczy taki nagłówek w odpowiedzi do klienta może przesłać dane w formie skompresowanej. Informuje o tym przeglądarkę poprzez zamieszczenie nagłówka Content-Encoding
Content-Encoding: gzip
Gzip jest najpopularniejszym sposobem kompresji, drugim najczęściej spotykanym, jednak mniej wydajnym jest deflate. Pierwsza metoda kompresji, zmniejsza rozmiar przesyłanych informacji o okolo 70%.
Każdy kij ma dwa końce.
Jeśli serwujemy skompresowana wersje strony, niektóre przeglądarki mogą wyświetlić ja nie do końca tak jak byśmy tego chcieli. Na pocieszenie, jak się zapewne domyślasz chodzi wyłącznie o starsze, wychodzące już z użycia wersje tych programów.
Co należy kompresowac?
Przede wszystkim wszystkie pliki HTML. Style, oraz skrypty również nie zaszkodzi poddać kompresji. Pomijamy natomiast grafikę czy dokumenty pdf gdyż one już są skompresowane, poddając je dodatkowej nie tylko marnujemy niepotrzebnie zasoby serwera, ale ponosimy ryzyko ze plik będzie zajmował więcej.
Jak się za to zabrać?
Sa dwa sposoby w jaki możemy ten proces zrealizować.
Poprzez plik .htaccess, umieszczając:
AddOutputFilterByType DEFLATE text/html text/plain text/xml
# Lub kompresuj wszystkie pliki z danym rozszerzeniem
SetOutputFilter DEFLATE
W tym przykładzie użyłem metody kompresji deflate
Możemy również kazać php serwować skompresowana wersje pliku. Rozszerzenie pliku który kompresujemy musimy zmienić na .php żeby serwer wiedział co z tym zrobić
Na samym początku pliku umieszczamy:
Tym razem jako metodę kompresji wybrałem gzip.
Oczywiście jeśli przeglądarka nie obsługuje kompresji, wysłana zostanie zwykła wersja.
Na koniec narzędzie online, którym możemy sprawdzić czy nasza strona faktycznie została skompresowana.
1 Komentarz to Kompresja – gzip
O mnie
Kategorie
- Aktualności (1)
- Bazy danych (2)
- CSS (2)
- Optymalizacja (3)
- OSX (1)
- PHP (2)
- Smarty (1)
- Wordpress (1)
- Zend (1)






ob_gzhandler ma wbudowaną instrukcję sprawdzania akceptowalnego kodowania gzip i nie jest potrzebne dodatkowe obciążanie kodu tym.
Dodatkowo wartość $_SERVER['HTTP_ACCEPT_ENCODING'] niekoniecznie może istnieć. Mój system ją „zjada” i serwer nie otrzymuje tego nagłówka, więc sypnie Ci noticem.