czerwca 21
Kompresja danych - sposób na niski transfer
Wielokrotnie każdy człowiek zajmujący się tworzeniem witryn internetowych zmagał się zapewne z niskim transferem danych, na który pozwalał jego serwer. Często przez przekroczenie transferu strona przestawała działać, aż do rozpoczęcia kolejnej jednostki czasowej, w której nadany jest transfer (najczęściej miesiąca). Oczywiście, gdy nie ma się z administratorem serwera za pan brat
Jako, że manuserwis.com ma coraz więcej odwiedzin, to i jego wykorzystanie transferu zwiększało się co chwila. Właściwie w każdym miesiącu przekraczaliśmy go i tylko dzięki uprzejmości administratora udało zwiększyć sie go do ponad 50 GB na miesiąc. Niestety dzisiaj znowu natrafiłem na ten sam problem - błąd 503, który w przypadku naszego serwera znaczy jedno - koniec transferu
Dzięki temu natknąłem sie na zagadnienie kompresji danych wysyłanych do przeglądarki, które może przynieść znaczną poprawę.
Wszystko dzieki buforowaniu danych - a więc kumulowania wyświetlanych danych w buforze, dzięki czemu to co chcemy wyświetlić na ekranie internauty, zostanie wysłane dopiero po przetworzeniu skryptu. Buforowanie to rozległy temat, którego nie będę tu omawiać - polecam manual PHP oraz tekst na php.pl Buforowanie wyjścia z PHP.
Nas zainteresuje pewna właściwość buforowania oraz biblioteki zlib, która koniecznie musi być zainstalowana na naszym serwerze. Aby to sprawdzić piszemy:
Aby skorzystać z kompresji danych cały wyświetlany kod otaczamy w dwóch linijkach:
-
echo '<html>';
-
# costam wyswietlamy
I tyle. W przypadku mojej strony kompresja była bardzo duża - z 36997 bajtów zrobiło się 10306, a więc dane zmniejszyły się ponad trzykrotnie! Oczywiście należy pamiętać, że buforowanie spowalnia nieco pracę skryptu, a także to, że teoretycznie nie wszystkie przeglądarki umieją korzystać z kompresji - jednak skrypt PHP sam to rozpozna i w razie czego wyśle stronę normalnie.
Oczywiście zawsz problemy wystębują przy IE. Specjalnie dla niego wstawiamy taką linijkę na początku skryptu:



