Menu
Wróć do listy wpisów
Strony www
Strona główna > Blog > Wydajność strony internetowej – cz. 1

Wydajność strony internetowej – cz. 1

Wydajność strony internetowej – cz. 1

Część pierwsza – jakie wąskie gardła ograniczają wydajność stron internetowych

W problematyce strony internetowej jej wydajność jest często aspektem pomijanym. Wszak w dobie szybkich komputerów i szerokopasmowego dostępu do Internetu jesteśmy pewni, że przeglądarka poradzi sobie z załadowaniem kilku plików, tekstu i zdjęć.

Nawet w momencie, kiedy wchodzimy na wybraną stronę i przez dłuższą chwilę patrzymy na biały ekran oraz kręcącą się animację ładowania, jesteśmy skłonni winę za taką kolej rzeczy zrzucić na dostawcę Internetu. Rzadziej przychodzi nam do głowy myśl, że strona nie została zoptymalizowana.

Jak wygląda nowoczesna strona internetowa od strony kodu?

Nowoczesna strona internetowa może składać się z setek elementów, które – złożone – tworzą jej całość. Prawie zawsze są to pliki graficzne i tekstowe, przechowujące kod HTML, CSS oraz JavaScript, a czasem, dodatkowo, plik muzyczny lub wideo. Jeżeli strona nie korzysta z dostępnych w systemie operacyjnym fontów, to przeglądarka również pobiera z serwera odpowiednie pliki, aby wyświetlić tekst w pożądanym stylu.

W jaki sposób przeglądarka pobiera wszystkie niezbędne do wyświetlenia strony zasoby?

Za naszym codziennym surfowaniem po Internecie stoi pewien jasno ustalony sposób komunikacji, który w skrócie nazywa się HTTP (HyperText Transfer Protocol). W wersji 1.1 został wprowadzony już 17 lat temu.

Protokół ten ustala sposób komunikacji między naszym komputerem a serwerem, na którym znajduje się strona internetowa. Jeżeli wejdziemy na dowolny adres, komputer zawsze wyśle zapytanie do serwera, tak, aby otrzymać zasoby niezbędne do wyświetlenia żądanej strony www.

W odpowiedzi serwer zacznie odsyłać do przeglądarki dokument HTML, będący szkieletem strony internetowej. Zawiera on informację o kolejnych niezbędnych plikach. Na przykład: jeżeli przeglądarka, analizując dokument HTML, natknie się na plik CSS, wyśle żądanie do serwera, aby ten plik otrzymać.

Nie rozwodząc się nad technicznymi aspektami, protokół http jest straszną gadułą. Wymaga zapytania serwera o każdy zasób napotkany w procesie przetwarzania struktury strony. Intuicja mówi, że nie jest to najszybszy sposób dostarczania plików i można by np. z wyprzedzeniem wysyłać kilka plików bez zbędnego zadawania pytań. Niestety tego http w wersji 1.1 nie potrafi. Istnieją pewne sztuczki mające przyspieszyć działania protokołu, ale o tym w nadchodzących wpisach.

http-to-jednak-straszna-gadula

Protokół HTTP to tylko czubek góry lodowej

Fundamentem jego działania jest inny protokół – TCP (Transmission Control Protocol). To z kolei protokół określający, w jaki sposób informacje są przesyłane przez sieć.

Mówiąc krótko i bez zbędnej technicznej gadki, jeżeli pobieramy z Internetu, np. zdjęcie, to do naszego komputera nie zostaje ono przesłane jako jeden cały plik, tylko jest podzielone na mniejsze części, które są na tyle niewielkie, że można je szybko przesłać. To proces niejawny i w pełni zautomatyzowany. Na docelowym komputerze te pakiety danych są składane z powrotem i w ten sposób plik możemy ponownie otworzyć.

Protokół TCP wysyła segmenty w sposób ostrożny – na początek kilka segmentów, później, gdy otrzyma odpowiedź od odbiorcy, że pakiety dotarły, wysyła kolejną, tym razem większą partię. Ta technika zwana Slow-Start zapobiega przepełnieniu sieci internetowej, uniemożliwiając przesłanie większej ilości danych niż sieć jest w stanie przyjąć.

Jest to najbardziej widoczne w chwili, kiedy zaczynamy pobierać jakikolwiek duży plik z sieci. Nigdy nie ma sytuacji, w której pobieralibyśmy taki plik z pełną prędkością, jaką deklaruje nasz dostawca – transfer musi „się rozkręcić”.

Slow-Start niestety bardzo skutecznie ogranicza zalety posiadania szybkiego łącza internetowego w przypadku pobierania stron internetowych. Ponieważ niezbędne zasoby do pobrania nie są zazwyczaj dużych rozmiarów, przeglądarka nie zdąży się rozkręcić, aby skorzystać z pełnej przepustowości łącza.

Dlaczego w ogóle korzysta się z techniki Slow-Start? Otóż 17 lat temu, kiedy protokół powstawał, sieć internetowa nie była tak rozbudowania jak teraz. Nikt się chyba nie spodziewał, do jakich rozmiarów rozrośnie się Internet, dlatego też nie przewidziano możliwości wyłączenia tego.

Podsumowanie

Zbierając tych kilka elementów, o których wspomniałem, za każdym zasobem niezbędnym do wyświetlenia strony internetowej stoi tak zwany HTTP Request. Jest to szereg działań podjętych w celu zlokalizowania i dostarczenia zasobu z serwera, na którym znajduje się strona internetowa, do okienka przeglądarki na naszym komputerze.

A w myśl zasady, że najszybszy HTTP Request to ten, którego nie trzeba wykonać, wiele technik optymalizacyjnych kręci się wokół redukcji liczby zapytań do poszczególnych serwerów.

W następnym wpisie przyjrzymy się dokładniej, z jakich czynności składa się HTTP Request, dlaczego wygląda to tak, a nie inaczej, oraz czy istnieją sposoby na ominięcie wąskich gardeł lub minimalizację ich wpływu na szybkość działania strony internetowej.

    Wypełnij formularz, aby zamówić bezpłatną wycenę