Jak przyspieszyć ładowanie stron za pomocą kompresji po stronie serwera?
Mamy rok 2010, a wiele stron WWW wciąż przesyłanych jest w postaci nieskompresowanej – mimo że to dobry sposób na zaoszczędzenie transferu i przyspieszenie ładowania się witryny. W czasach, kiedy od tego parametru będzie zależała pozycja w wyszukiwarce Google, warto porzucić sentyment do bardzo starych przeglądarek i włączyć kompresję gzip dla swoich stron.
Przesyłanie od serwera do przeglądarki stron HTML w nieskompresowanej formie nie jest zbyt efektywne. Po prostu sam język hipertekstu nie jest efektywny – znaczniki wymagają domknięć, tabelki mają skomplikowane formalne struktury. Nic się z tym nie da zrobić, nie skrócimy nazw tagów czy atrybutów. Do tego same tekstowe treści na stronie proszą się wręcz o kompresję. Jest ona niezwykle wydajna – stosowana w serwerze Apache biblioteka zlib pozwala na zmniejszenie rozmiarów strony czasem nawet o rząd wielkości.
Wszystkie współcześnie używane przeglądarki radzą sobie ze skompresowanymi stronami bez problemów. Odbywa się to w dwóch krokach: przeglądarka wysyła po prostu do serwera nagłówek, informujący, że akceptuje kompresowane strony – Accept-Encoding: gzip, deflate. Jeśli treści będą skompresowane, w odpowiedzi serwer wysyła np. – Content-Encoding: deflate.
Istnieje wiele formatów kompresji obsługiwanych przez serwery i aplikacje klienckie – najczęściej spotyka się jednak właśnie deflate (opisane w dokumencie RFC 1950) i gzip (opisane w dokumencie RFC 1952)
Warto pamiętać, że wysłanie nagłówka Accept-Encoding to tylko informacja, nie stanowi to rozkazu dla serwera, by wysłać postać skompresowaną. Po stronie serwera należy przygotować odpowiednią konfigurację.
Jeśli serwer obsługuje np. rozszerzenie mod_deflate, włączamy kompresję wyjściowych plików po typach MIME w pliku .htaccess witryny:
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
Po wprowadzeniu zmian do .htaccess należy sprawdzić, czy strony faktycznie przesyłane są z kompresją. Użytkownicy Firefoksa mogą w tym celu wykorzystać dodatek LiveHTTPHeaders, pozwalający na oglądanie nagłówków HTTP „na żywo”. Należy w odpowiedzi serwera wyszukiwać linii zawierającej ciąg Content-encoding: deflate (lub Content-encoding: gzip).
Użytkownicy Chrome'a podobną funkcjonalność mają wbudowaną w swoją przeglądarkę. Wystarczy, że w pasku adresowym wpiszą chrome://net-internals/view-cache. Ładowanie listy otwartych zasobów zajmie kilka sekund, później jednak można przeglądać ich zawartość klikając ich URL-e na wyświetlonej liście.
A co jeśli nie mam dostępu do pliku .htaccess?
Niekiedy w hostingu współdzielonym użytkownicy nie mogą modyfikować swojego pliku .htaccess. Wówczas można wykorzystać sprytną sztuczkę, opublikowaną po raz pierwszy na blogu PerishablePress.com.
Wystarczy zmienić rozszerzenie pliku .html na .php i umieścić przed jakimikolwiek treściami HTML następujący snippet kodu PHP:
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>
Skrypt ten dostarcza skompresowaną gzipem treść do wszystkich przeglądarek, które obsługują kompresję. Jeśli jej nie obsługują, wysłana zostanie treść nieskompresowana.
Źródło: wikipedia.org, perishablepress.com
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
11
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
gonzales Javowcy pozdrawiają dotnetowców xD
kaziks Galaxy S II - u mnie po aktualizacji Firefox działa strasznie zacina się...
Doniek Szkoda że strona z demo nie działa - non stop się przeładowuje
bartez Niech zaczną jeszcze bardziej ograniczać programistów, to zdziwią się ilu...
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
marcusm Fajna reklama produktu za 500 zł
rza a to starsze aplikacje nie będą działać i kompilacja pod Windows SDK 7.1...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |








