|
Dwa sposoby na zaoszczędzenie pasma, obniżenie kosztów i przyśpieszenie działania portalu (za darmo!)
Jednym z problemów, z którymi musiałem się zmierzyć pracując nad portalem www.earthcountries.com a który – jestem pewien – w jakimś momencie dosięgnie każdego webmastera jest miesięczny limit transferu. Zwiększanie tego limitu jest dość kosztowne a jego wykorzystanie może nastąpić bardzo szybko zmuszając do kolejnych opłat na rzecz firmy hostingowej.
Poza problemem limitowania miesięcznego transferu, istnieje też problem jego szybkości. Dotyczy on zwłaszcza stron internetowych nowej generacji, które są „cięższe” niż starsze, prostsze. Obecnie większość stron potrafi zajmować ponad 100 KB. Można pomyśleć – wielka mi sprawa. Jednak nie zapominajmy o dwóch faktach. Pierwszy z nich to łączna ilość stron oraz znaczna liczba użytkowników, którzy nie posiadają łączy dużej przepustowości, lecz korzystają z Internetu np. przez modem. Przy połączeniu modemowym 56 kbitów, czyli ze średnim współczynnikiem ściągania 5 KB/s, strona 100KB będzie się ściągała przez 20 sekund. Czy nie jest to długi czas oczekiwania? Nawet przy stałym łączu 256 kbitów (ok. 25 KB/s) ściąganie takiej strony może zająć 4 sekundy.
Na szczęście istnieje rozwiązanie tego problemu, które potrafi usatysfakcjonować zarówno webmastera przyśpieszając działanie portalu i obcinając przy tym zużycie pasma o conajmniej 60%, jak i użytkowników pragnących mieć szybki dostęp do stron zawierających sporo treści. Tym magicznym rozwiązaniem jest Kompresja!
Aby kompresja mogła zadziałać, zarówno serwer jak i klient muszą ją „rozpoznawać” oraz obsługiwać. Przeglądarki WWW od wielu już lat obsługują skompresowane strony internetowe. Tak i dla serwerów internetowych stworzono wiele narzędzi, które pomagają w kompresji stron przed ich wysłaniem do przeglądarek.
Najczęściej używanym serwerowym narzędziem do kompresji jest moduł mod_gzip przeznaczony dla serwera Apache (istnieją też podobne rozwiązania dla Microsoft IIS, ale o nich oraz o narzędziach komercyjnych porozmawiamy przy innej okazji).
Mod_gzip jest modułem dla Apache'a (istniejącym dla „okienkowej” oraz linuksowej i uniksowej jego wersji), który potrafi „w locie” znacząco zmniejszyć rozmiar strony wysyłanej do przeglądarki. Nie zapominajmy, że kompresja taka działa tylko wtedy, gdy przeglądarka jej zażąda. Jeżeli przeglądarka nie obsługuje skompresowanych stron albo nie poprosi o skompresowaną stronę, serwer po prostu przekaże ją w nieskompresowanej postaci! Większość ludzi twierdzi, że konfiguracja kompresji w Apache'u to udręka, ale ja jestem przeciwnego zdania. Jest ona bardzo prosta nawet dla webmastera, który posiada tylko podstawową wiedzę o Apache'u. Jeżeli będzie takie zapotrzebowanie, mógłbym napisać poradnik o tym jak skonfigurować Apache'a dla Uniksa czy Windows z działającym modułem mod_gzip.
Oprócz modułu mod_gzip istnieje też moduł mod_deflate, podobny do gzipa a nawet uważany przez część ludzi za lepszy pod względem osiąganych współczynników kompresji. Ci, którzy nie posiadają własnych serwerów WWW, mogą poprosić swoje firmy hostingowe o uruchomienie mechanizmów kompresji na ich serwerach. To całkiem logiczne, że większość firm hostingowych nie uruchamia od razu takich mechanizmów, ponieważ dzięki temu ich klienci mogliby w łatwy sposób zyskać na transferze (a przez to firmy straciłyby potencjalne pieniądze, które klienci mogliby u nich wydać na podwyższanie limitów transferu). Jeżeli tak czy owak firma hostingowa kategorycznie odmówi uruchomienia kompresji, nie należy wtedy rozpaczać.
Istnieje inne magiczne zaklęcie, które potrafi oszczędzić nerwów! Tym słowem jest: PHP. Wierz albo nie, ale pojedyncza linijka PHP dopisana do nagłówka strony potrafi ją całą skompresować (podobnie jak zrobiłby to automatycznie serwer WWW).
A więc, aby kompresja PHP zadziałała, powinieneś wstawić następujący wiersz w nagłówku każdej ze swoich stron: <? ob_start("ob_gzhandler"); ?> To wszystko! Dzięki tej prostej linijce, zawartość HTML strony będzie kompresowana „w locie”! Dobra wiadomość jest też taka, że PHP działa na większości serwerach firm hostingowych (a przynajmniej na tych, na których działa Joomla/Mambo). Odnośnie zużycia CPU czy prędkości kompresji, to nie jest coś czym należy się martwić, gdy używany jest mod_gzip, mod_deflate czy powyższa funkcja PHP. We wszystkich tych przypadkach zużycie CPU jest prawie zerowe a czas reakcji serwera jest nawet lepszy niż bez mechanizmu kompresji. Stukilobajtowa strona potrafi być skompresowana nawet do 20 kilobajtów lub jeszcze bardziej, ponieważ przy czystym tekście osiąga się wysokie współczynniki kompresji.
Przykład z życia: 100 KB strony jest ściągane modemem przez 20 sekund i zabiera 100 KB transferu, ta sama strona skompresowana do 20 KB jest ściągana modemem w ciągu 4 sekund i zabiera tylko 20 KB transferu! A przy stałym, szybkim łączu? Strona ta jest ładowana w ciągu 1 sekundy! Całkiem nieźle i to za darmo, nie sądzisz? To wszystko na teraz! Jeżeli uważasz, że poradnik ten okazał się tobie pomocny, byłoby miło zobaczyć twój szczegółowy opis jak uruchomić i przetestować kompresję przy użyciu stosowanego przez Ciebie oprogramowania serwerów WWW. Kensai, www.earthcountries.com Oryginal dokumentu znajduje się tutaj. Polska adaptacja - Tomek Władyczański
|