|
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
|