|| | ||| okładka | intro | spis treści | redakcyjne | prenumerata | adv.
Magazyn Prawdziwych Internautów
numer 25:. aktualności | komputery | internet | kultura ||| || |

 

Przyspieszenie ładowania się stron WWW

Kiedy twoja strona ładuje się, nie możesz pozwolić sobie aby ludzie nudzili się oglądając biały ekran monitora. Ten artykuł (i jego kolejne odcinki w kolejnych numerach PRO) da ci kilka wskazówek jak ominąć często spotykane problemy z ładowaniem się stron WWW i jak zachęcić odwiedzających strony do poczekania tych kilku minut na załadowanie się strony i żeby mieli przekonanie, że nie był to czas stracony.

Spodziewam się, że twoja witryna jest już prawie skończona. Poszczególne strony są wykonane starannie i zwięźle. Wyrzucone zostały zbyt duże obrazki i inne niepotrzebne rzeczy; również ilość testu została zoptymalizowana... Więc wszystko powinno być w porządku, czas ładowania strony nie powinien być zbyt długi nawet dla tych, którzy łączą się z Internetem poprzez dial-up. Ale i tak każdy odwiedzający twoja stronę musi czekać jakiś tam czas, niekoniecznie długi, aż strona się załaduje. W tym miejscu jesteś gotowy na postawienie sobie pytania - jak moja strona się ładuje. Ten artykuł wyjaśnia techniczne szczegóły ładowania się stron WWW i jak to ładowanie można przyspieszyć.

Poprawianie użyteczności

Jednym z najważniejszych celów, który należy osiągnąć podczas tworzenia strony www jest minimalizacja czasu reakcji:

  • nadrzędnym kryterium projektowania witryny musi być szybkość ładowania się
  • najważniejszą kwestią jest to, jak szybko użytkownik zobaczy na ekranie użyteczną informację
  • rozmiar całej strony jest mniej istotny, jeżeli użytkownik może szybko zobaczyć istotną dla niego część informacji

Ten artykuł skupia się na trzecim punkcie. Każda strona WWW posiada swoją własną, szczególną najważniejszą informację. Twoim celem jest to, aby przeglądarka wyświetliła odpowiednią informację, nawet wtedy, kiedy dopiero niewielki kawałek strony zdążył się załadować. Aby osiągnąć ten cel należy wiedzieć, że:

  • następujące po sobie przesyłanie kodu DHTML pozwala przeglądarce na wyświetlanie strony podczas jej ładowania, nie czekając aż zostanie cała ściągnięta
  • przeglądarki potrafią przechowywać wcześniej ściągnięte informacje
  • współczesne przeglądarki są w stanie wielce przyspieszyć czas odpowiedzi poprzez ładowanie strony fragmentami

Tworzenie przyjaznych użytkownikowi tabel

Odkąd tabelki pozwalają na organizowanie elementów stron www elastycznie i wydajnie, składniki stron często zawierają się pomiędzy parą znaczników <table> </table>. Podczas ładowania strony, przeglądarka może wyświetlić tabele tylko wtedy, jeżeli 'wnętrze' tej tabeli zostało ściągnięte, tzn. zostało ściągnięte to co jest miedzy znacznikami <table> i </table>. Jeżeli chcesz, aby fragmenty strony pojawiały się zaraz po ściągnięciu, to niestety powoduje to ograniczone korzystanie z tabel. Idealnie by było gdyby udało ci się spełnić następujące warunki:

  • unikanie, jeżeli to możliwe, zagnieżdżonych tabel
  • tworzenie krótkich tabel
  • unikanie tabel do tworzenia layout'u strony (sytuacja, gdy cała strona jest w jednej tabeli)

Aby spełnić te wymagania, możesz wykorzystać kilka technik kodowania dokumentu HTML. Aby je pokazać, użyję przykładowej strony WWW z typowym layoutem. Przykład 1 pokazuje stronę, składającą się z pięciu części. Takie strony są często tworzone przy użyciu jednej tabeli, przy znacznym zagnieżdżaniu pomniejszych tabel. Taki styl kodowania może znacznie opóźnić ładowanie strony: użytkownik widzi pusty ekran, do czasu kiedy całą strona zostanie ściągnięta.

Przykład 1: typowa strona www

Możesz rozdzielić stronę na kilka niezależnych tabel, zachowując zdolność przeglądarki do wyświetlania każdej krok po kroku.

Pionowo ułożone tabele

Podobnie do wielu twórców stron, możesz wprowadzić górną część (nagłówek), środek (lewa kolumna, główna część i prawa kolumna) oraz dolną część (stopka) jako trzy niezależne tabele. W tym przypadku nagłówek będzie się ładował w tym samym czasie co część środkowa. Odwiedzający witrynę nadal więc musi czekać, aż wartościowe informacje, czyli część środkowa ściągnie się całkowicie.

Przykład 2. Trzy niezależne tabele:

<body>

<table cellspacing=0 cellpadding=0 border=0 width=100% height=33>
<tr><td bgcolor=#dddddd>[1] nagłówek </td></tr>
</table>

<table cellspacing=0 cellpadding=0 border=0 width=100% height=160>
<tr>
<td width=22% bgcolor=#f3f3f3>[2] lewa kolumna</td>
<td width=56% align=center>[3] część główna</td>
<td width=22% bgcolor=#f3f3f3>[4] prawa kolumna</td>
</tr></table>

<table cellspacing=0 cellpadding=0 border=0 width=100% height=33>
<tr><td bgcolor=#dddddd>[5] stopka</td></tr>
</table>

</body>

Przy niewielkiej edycji kodu, możesz rozdzielić stronę na trzy tabelki, ale rozmieszczone poziomo.

Tabele umieszczone poziomo

Aby wyświetlić dwie lub więcej kolumn na stronie jako niezależne tabele, niektóre z nich powinny pojawić się jako floating objects, czyli tzw. pływające tabelki. Przykładem floating objects jest na przykład znacznik <img>. Obrazek znajduje się po lewej stronie tekstu, jeżeli atrybut align jest ustawiony na left. Atrybut align tabeli określa, w którym kierunku tabelka ‘płynie’, powoduje, że inny obiekt tego typu i otaczający tekst umieszczają się odpowiednio wobec tabeli.

W ten sposób, wszystkie kolumny mogą zostać zaimplementowane jako odpowiadające sobie tabele. Ostatnia tabela może być umieszczona na dwa sposoby: jako pływająca tabela (przykład 3) lub jako zwykły kod HTML, który jest umieszczony dookoła pływającej tabeli (przykład 4)

Przykład 3. Trzy pływające tabelki

<!—tutaj nagłówek -->

<table align=left cellspacing=0 cellpadding=0 border=0 width=22% height=160>
<tr><td bgcolor=#f3f3f3>
[2] lewa kolumna
</td></tr></table>

<table align=left cellspacing=0 cellpadding=0 border=0 width=56% height=160>
<tr><td align=center>
[3] cześć główna
</td></tr></table>

<table align=left cellspacing=0 cellpadding=0 border=0 width=22% height=160>
<tr><td bgcolor=#f3f3f3>
[4] prawa kolumna
</td></tr></table>

<br clear=all>

<!—tutaj stopka -->

Przykład 4. Dwie pływające tabelki i po nich, występująca osobno część główna
<!—tutaj nagłówek -->

<table align=left cellspacing=0 cellpadding=0 border=0 width=22% height=160>
<tr><td bgcolor=#f3f3f3>
[2] lewa kolumna
</td></tr></table>

<table align=right cellspacing=0 cellpadding=0 border=0 width=22% height=160>
<tr><td bgcolor=#f3f3f3>
[4] prawa kolumna
</td></tr></table>

[3] część główna

<br clear=all>

<!—tutaj stopka -->

W przykładzie 3 i przykładzie 4 w różny sposób jest umieszczona w kodzie HTML część główna.

W przykładzie 3 przeglądarki traktują część lewą, środkową i prawą jako zwykłe tabelki HTML.

W przykładzie 4 przeglądarki umieszczają część główną bez względu na układ pozostałych kolumn. Część główna następująca po lewej i prawej kolumnie jest umieszczona pomiędzy pływającymi tabelkami. Kiedy w głównej części znajduje się więcej składników niż może się zmieścić na przestrzeni wysokości pływających kolumn obok niej, tekst części głównej umieszcza się poniżej dołu kolumn. Mówiąc inaczej, przeglądarka użyje całej szerokości strony do wyświetlenia części głównej. To może być przydatną cechą szczególnie, gdy wysokość kolumny z częścią główna znacznie przekracza wysokość kolumn obok niej.

Najważniejszą cechą drugiej możliwości jest, że gdy część główna jest oddzielnym kodem HTML, możesz nie zamykać w tag <table>, co powoduje, iż zostanie wyświetlona od razu, gdy strona zacznie się ładować.

Co więcej, możesz zmienić kolejność ładowania się kolumn. Jeżeli chcesz, możesz przestawić odpowiednie tabele - ustawić atrybut align, w sposób jaki jest pokazany w przykładzie 3 i przykładzie 4. Przykład 3 ustawia kolejność ładowania części strony w prosty sposób, jedna tabela po drugiej; w przykładzie 4 żądamy, aby część głowna pojawiła się po kolumnach lewej i prawej.

Ograniczenia dla obiektów pływających

Kiedy pracujesz z obiektami pływającymi, musisz pamiętać o następujących sprawach:

  • stosowanie pływających tabel jest mniej elastycznym rozwiązaniem niż standardowe użycie tabel. W szczególności pływającym obiektom brak możliwości skorzystania z komórek tabeli, co jest bardzo doceniane przez wielu twórców stron WWW.
  • Netscape Nawigator 4.x zaczyna wyświetla pływające obiekty tylko po załadowaniu całej grupy powiązanych ze sobą pływających obiektów. W ten sposób, użytkownicy Nevigator 4.x niewiele skorzystają z ulepszeń związanych z przyspieszeniem ładowania stron WWW.
  • Netscape 4.7 ma błąd, który objawia się gdy użyjesz procentowej szerokości poszczególnych pływających obiektów. Ta wersja Netscape’a błędnie zmniejsza szerokość każdej następnej pływającej tabeli.

Netscape'm można się zbytnio nie przejmować - odsetek internautów korzystających z przeglądarki internetowej Netscape spadł w lipcu do najniższego poziomu w historii. Z aplikacji korzysta tylko 3,4% użytkowników Internetu - jeszcze rok temu wartość ta wynosiła 13%.

Tworzenie skryptów działających po stronie klienta i ładowanie stron
Przez używanie zewnętrznych skryptów, klient musi ściągnąć plik .js tylko raz. Zwykle skrypty są używane tak:

Przykład 5. Użycie zewnętrznych skryptów

<html><head>
<script language=javascript src=common.js></script>
</head>
<body>
<form onsubmit="return validateForm()">
<!— elementy formularza -->
</form>
</body></html>

Ale, rozważ inny sposób - dlaczego by nie umieścić zewnętrznego skryptu na końcu kodu HTML? Jeżeli tak zrobisz, widoczne części strony załadują się szybciej i dopiero później załaduje się skrypt. W tym przypadku, rozmiar samego skryptu staje się mniej ważny dla użytkownika. Jeżeli jednak chcesz pozwolić użytkownikowi na interakcje ze stroną w czasie jej ładowania, to rozwiązanie może być złe.

Sprawdzanie czasu ładowania się strony

Jeżeli używasz serwera www Apache, możesz skorzystać z narzędzia mod_bandwidth. Można tam ustawić prędkość połączenia i w ten sposób emulować ściąganie stron WWW. W ten sposób dowiesz się jak szybko będzie działać twoja strona przy danej szybkości połączenia.

To jest pierwsza część serii artykułów poświęconych przyspieszaniu ładowania się stron WWW. W kolejnych numerach PRO ukażą się kolejne artykuły z tej serii:

  • "Zoptymalizowany design"
  • "Tworzenie szybko działających stron WWW"
  • "Wymiana informacji z serwerem bez ładowania strony HTML od nowa"
  • "Ulepszanie wyglądu tabel"
  • "CSS. Jak skonstruować layout bez używania tabel"
  • "Ekstremalna optymalizacja kodu HTML"
  • "Jak użyć emulatora połączenia mod_bandwidth"

Mariusz Pawłowski
mario@data.pl

 

copyrights PRO - Magazyn Prawdziwych Internautów 2002 [ aktualności | komputery | internet | kultura ] 17
<--poprzednia strona | do góry | spis treści | następna strona-->