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
Polecamy
Reklama
Popularne
Firefox 10 już jest. Wiele atrakcji dla programistów, użytkownicy raczej nic nie zauważą
9
Źle się dzieje z Chrome, ze stabilnością coraz gorzej. Gdzie się podziała słynna izolacja procesów?
26
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Debata w sprawie ACTA: internauci spodziewali się chyba czegoś innego
13
Nowa polityka prywatności Google'a już za miesiąc wejdzie w życie. Mamy się czego bać?
16
PHP 5.3.9 nie pozwoli hakerom zawiesić serwera. Pozwoli za to przejąć nad nim kontrolę
28
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
[Aktualizacja] Facebook zablokował Demotywatory.pl. W czym zawiniły?
36
FBI zamknęło Megaupload. Anonimowi dali się sprowokować. Teraz ich akcja uzasadni potrzebę SOPA?
17
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
Rząd Tuska zablokował dostęp do tańszych leków z internetowych aptek
61
„Donald matole, twój rząd dopadną kibole” – hakerska elita przyłącza się do walki z ACTA
23
Społeczność
WebDev Z tego wynika, że zmienią się tylko serwery z którymi przeglądarka łączy...
agilob Ale folder bez nazwy się da założyć :P
zetesha Apple nie zrezygnował z PPC całkiem ponieważ posiada P.A. Semi, która to...
pablo1919191 Thunderbolt to jest technolgia intela wiec skora appel wpakowal jako...
BartekBb Już wiem skąd kopiujecie artykuły, bo zrobiliście ten sam błąd co na...
Marr moglibyście się zdecydować. W newsach podajecie, że systemy wymiany (czyli...
setXYZ I jeszcze warto poczytać co o tym myśli sam MS http://webhosting.pl/Koniec...
- 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)
- Marek: problem z menu (2)
- Marek: Własne checkboxy w HTML,CSS (1)
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ł |








