Optymalizacja parametrów i ±rodowiska pracy protokoªu HTTP

Transkrypt

Optymalizacja parametrów i ±rodowiska pracy protokoªu HTTP
Politechnika Warszawska
Rok akademicki 2013/2014
Wydziaª Elektroniki i Technik Informacyjnych
Instytut Informatyki
PRACA DYPLOMOWA MAGISTERSKA
Rafaª Paszkiewicz
Optymalizacja parametrów
i ±rodowiska pracy protokoªu HTTP
Opiekun naukowy:
mgr in». Paweª Radziszewski
Ocena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.........................................
Podpis Przewodnicz¡cego
Komisji Egzaminu Dyplomowego
Kierunek:
Informatyka
Specjalno±¢:
In»ynieria Systemów Informatycznych
Data urodzenia:
17 czerwca 1989 r.
Data rozpocz¦cia studiów:
20 lutego 2012 r.
›yciorys
Urodziªem si¦ 17 czerwca 1989 r. w Tarnobrzegu. W latach 2005-2008 ucz¦szczaªem do I Liceum Ogólnoksztaªc¡cego
Collegium Gostomianum
w Sandomierzu. W 2008 r. zdaªem egza-
min maturalny oraz rozpocz¡ªem nauk¦ na Wydziale Elektroniki i Technik Informacyjnych
Politechniki Warszawskiej. W 2012 r. obroniªem z wyró»nieniem prac¦ in»yniersk¡ pt.
chanizmy unikania przeci¡»enia w sieci TCP/IP.
wzi¡ªem udziaª w dwusemestralnym stypendium
Me-
Nast¦pnie w trakcie studiów magisterskich
LLP-Erasmus
na Facultad de Informática,
Universidad Politécnica de Madrid.
.....................................
podpis studenta
Egzamin dyplomowy
Zªo»yª egzamin dyplomowy w dn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Z wynikiem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ogólny wynik studiów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dodatkowe wnioski i uwagi Komisji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
...........................................................................................
Tytuª
Optymalizacja parametrów i ±rodowiska pracy protokoªu HTTP
Streszczenie
Dokument opisuje zasad¦ dziaªania protokoªu HTTP oraz mechanizmy usprawniaj¡ce wydajno±¢ jego pracy. Przedstawia kolejne fazy ewolucji tego standardu na przestrzeni lat oraz
przewidywania zwi¡zane z jego dalszym rozwojem i sposobami poprawy wydajno±ci.
Praca dotyczy równie» analizy ±rodowiska dziaªania protokoªu, prezentuje charakterystyk¦
klienta, serwera i strony internetowej, a tak»e zwi¡zane z nimi techniki optymalizacyjne. Ponadto na potrzeby bada« zaimplementowano robota internetowego, który posªu»yª do eksploracji pewnego zbioru witryn oraz konstrukcji statystycznego modelu na ich podstawie.
Finalnie przeanalizowano rezultaty eksperymentu maj¡cego na celu zbadanie wpªywu opisanych technik optymalizacyjnych na wydajno±¢ protokoªu. Zwerykowano skuteczno±¢ tych
metod w ramach pobierania stron internetowych wzorowanych na zbudowanym modelu.
Sªowa kluczowe
HTTP, HTTP-NG, SPDY, optymalizacja protokoªu, robot internetowy, eksploracja sieci
Title
Optimization of parameters and the environment of the HTTP protocol
Abstract
The document describes the HTTP protocol, the principle of its operation and improvements of performance. It presents subsequent evolution phases of the standard over years
and anticipation of the future progress and ways to boost its eciency.
Also analysis of the protocol environment is concerned client-side, server-side and website
characteristics are commented along with corresponding optimization techniques. Moreover,
for the purpose of research, crawler application was implemented and deployed for the network
exploration process and building the statistical model of visited websites.
Finally, the practical experiment is conducted in order to analyze the impact of environment optimization on the protocol performance. The improvements are veried in the context
of fetching articial websites built upon the calculated model.
Keywords
HTTP, HTTP-NG, SPDY, protocol optimization, crawler, network exploration
Spis tre±ci
Wprowadzenie
7
1 Protokóª HTTP
1.1
Historia
1.2
Architektura
1.3
1.4
8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.2.1
Transakcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.2.2
Typy danych
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
1.2.3
Adresowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
1.2.4
Metody dost¦pu
1.2.5
Format komunikatu
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
11
Problemy wydajno±ciowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.3.1
Znaczenie opó¹nienia . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.3.2
Wpªyw opó¹nienia na percepcj¦ u»ytkownika
1.3.3
Wpªyw opó¹nienia na transakcje HTTP
. . . . . . . . . . . . . .
13
. . . . . . . . . . . . . . . . .
14
Optymalizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
1.4.1
Poª¡czenia równolegªe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
14
1.4.2
Poª¡czenia trwaªe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
1.4.3
Poª¡czenia potokowe . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2 Klient HTTP
17
2.1
Funkcjonalno±¢
2.2
Architektura
2.3
Zasada dziaªania
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
18
19
2.3.1
Pobieranie zasobów . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.3.2
Budowa drzewa DOM
. . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.3.3
Budowa drzewa CSSOM . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.3.4
Budowa drzewa renderowania . . . . . . . . . . . . . . . . . . . . . . .
21
2.3.5
Rozkªad ramek
2.3.6
Wy±wietlenie strony
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
21
2.4
Analiza dziaªania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.5
Optymalizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.5.1
Równolegªo±¢ transferu i przetwarzania . . . . . . . . . . . . . . . . . .
23
2.5.2
Priorytetyzacja zasobów . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.5.3
Skanowanie wyprzedzaj¡ce . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.5.4
Ograniczenie rozmiaru »¡da«
2.5.5
Pami¦¢ podr¦czna DNS
2.5.6
Akcje wyprzedzaj¡ce . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
Parametryzacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
2.6
. . . . . . . . . . . . . . . . . . . . . . .
23
. . . . . . . . . . . . . . . . . . . . . . . . . .
24
4
3 Serwer HTTP
26
3.1
Funkcjonalno±¢
3.2
Architektura
3.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.1
Podej±cie wieloprzepªywowe . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.2
Podej±cie zdarzeniowe
Zasada dziaªania
. . . . . . . . . . . . . . . . . . . . . . . . . . .
28
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.3.1
Przyj¦cie poª¡czenia
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.3.2
Otrzymanie »¡dania
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.3.3
Przetworzenie »¡dania
3.3.4
Konstrukcja odpowiedzi
. . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.3.5
. . . . . . . . . . . . . . . . . . . . . . . . . . .
31
Wysªanie odpowiedzi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.4
Komponenty sieci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.5
Optymalizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
3.5.1
Unikanie przekierowa« . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
3.5.2
Obsªuga pola Expires
34
3.5.3
Konguracja znaczników ETag
3.5.4
Zastosowanie kompresji
3.5.5
Partycjonowanie domeny . . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.5.6
Wykorzystanie infrastruktury CDN . . . . . . . . . . . . . . . . . . . .
37
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
35
. . . . . . . . . . . . . . . . . . . . . . . . . .
35
4 Zasób sieci
38
4.1
Ewolucja zasobu sieci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.2
Pomiary zasobów internetowych . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.2.1
Pomiary Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.2.2
Pomiary wªasne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
4.2.3
Pomiary Internet Archive
43
4.2.4
Porównanie pomiarów
4.3
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
44
Optymalizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
4.3.1
Š¡czenie zasobów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
4.3.2
Osadzanie zasobów . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
4.3.3
Uproszczenie arkuszy styli . . . . . . . . . . . . . . . . . . . . . . . . .
47
4.3.4
Miniaturyzacja i zaciemnianie kodu . . . . . . . . . . . . . . . . . . . .
47
4.3.5
Doª¡czanie zasobów w postaci zewn¦trznych plików . . . . . . . . . . .
48
4.3.6
Lokowanie skryptów i arkuszy styli . . . . . . . . . . . . . . . . . . . .
48
4.3.7
Opró»nianie bufora . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
4.3.8
Redukcja liczby elementów DOM . . . . . . . . . . . . . . . . . . . . .
49
4.3.9
Optymalizacja obrazów
49
. . . . . . . . . . . . . . . . . . . . . . . . . .
5 Roboty internetowe
5.1
5.2
50
Algorytmy eksploracji sieci . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
5.1.1
Eksploracja podstawowa . . . . . . . . . . . . . . . . . . . . . . . . . .
52
5.1.2
Eksploracja selektywna . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
5.1.3
Eksploracja ukierunkowana
. . . . . . . . . . . . . . . . . . . . . . . .
53
5.1.4
Eksploracja rozproszona . . . . . . . . . . . . . . . . . . . . . . . . . .
55
Problemy eksploracji sieci
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
5.2.1
Bazowy zbiór adresów
. . . . . . . . . . . . . . . . . . . . . . . . . . .
56
5.2.2
Cykle eksploracji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
5.2.3
Przestrzeganie etykiety . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
5
6 Dokumentacja projektowa
61
6.1
Sªownik poj¦¢ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
6.2
Wymagania funkcjonalne i niefunkcjonalne . . . . . . . . . . . . . . . . . . . .
62
6.3
Przypadki u»ycia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
6.4
Architektura
64
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.1
Warstwa danych
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
6.4.2
Warstwa przetwarzania . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
6.4.3
Warstwa komunikacji . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
6.4.4
Warstwa sterowania
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
6.5
Technologia realizacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
6.6
Instrukcja u»ytkownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
7 Eksperymentalna optymalizacja ±rodowiska protokoªu HTTP
7.1
7.2
70
7.1.1
Liczba równolegªych poª¡cze« . . . . . . . . . . . . . . . . . . . . . . .
71
7.1.2
Kompresja gzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
7.1.3
Infrastruktura CDN
74
7.1.4
Eksternalizacja a osadzanie zasobów
. . . . . . . . . . . . . . . . . . .
75
7.1.5
Konkatenacja zasobów . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
7.1.6
Miniaturyzacja zasobów
. . . . . . . . . . . . . . . . . . . . . . . . . .
77
7.1.7
Pozycjonowanie skryptów
. . . . . . . . . . . . . . . . . . . . . . . . .
78
7.1.8
Mapy obrazów
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optymalizacja przykªadowych stron
. . . . . . . . . . . . . . . . . . . . . . .
8.2
79
81
7.2.1
Optymalizacja portalu informacyjnego . . . . . . . . . . . . . . . . . .
81
7.2.2
Optymalizacja galerii obrazów . . . . . . . . . . . . . . . . . . . . . . .
83
7.2.3
Optymalizacja wyszukiwarki . . . . . . . . . . . . . . . . . . . . . . . .
85
8 Przyszªo±¢ protokoªu HTTP
8.1
70
Przegl¡d technik optymalizacyjnych . . . . . . . . . . . . . . . . . . . . . . . .
87
HTTP-NG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
8.1.1
Modularyzacja
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
8.1.2
Ulepszenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
HTTP/2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
8.2.1
Architektura
90
8.2.2
Warstwa komunikacji . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
8.2.3
Multipleksowanie komunikatów
. . . . . . . . . . . . . . . . . . . . . .
91
8.2.4
Priorytetyzacja komunikatów
. . . . . . . . . . . . . . . . . . . . . . .
92
8.2.5
Pojedyncze poª¡czenie . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
8.2.6
Sterowanie przepªywem
. . . . . . . . . . . . . . . . . . . . . . . . . .
92
8.2.7
Transfer wyprzedzaj¡cy
. . . . . . . . . . . . . . . . . . . . . . . . . .
92
8.2.8
Kompresja nagªówka . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Podsumowanie
94
Tablice
95
Sªownik poj¦¢
99
Zawarto±¢ pªyty CD
100
Bibliograa
101
6
Wprowadzenie
Internet uwa»any jest cz¦sto za jedno z wa»niejszych osi¡gni¦¢ XX wieku. Obecnie stanowi
gwaªtownie rozwijaj¡ce si¦ medium informacyjne, ª¡cz¡ce cechy telewizji, prasy i radia. Pocz¡tkowo nie podejrzewano, »e stanie si¦ gªównym o±rodkiem wymiany informacji, powszechnie
dost¦pnym, popularnym i istotnym dla funkcjonowania spoªecze«stwa.
Globalna sie¢, któr¡ znamy pod obecn¡ postaci¡, jest rezultatem dªugotrwaªego procesu
maj¡cego swe pocz¡tki kilka dekad temu. Wydarzeniem w historii Internetu, które w znacznej
mierze przyczyniªo si¦ do jego sukcesu, jest wprowadzenie protokoªu TCP opowiedzialnego
za niezawodn¡ transmisj¦ danych oraz protokoªu HTTP zapewniaj¡cego jednorodny sposób
dost¦pu do rozproszonych i heterogenicznych zasobów sieci.
Podczas gdy Internet bªyskawicznie rozrósª si¦ na przestrzeni lat, a liczba komputerów
podª¡czonych do sieci zwi¦kszyªa si¦ o kilka rz¦dów wielko±ci, TCP oraz HTTP wci¡» pozostaj¡ wiod¡cymi rozwi¡zaniami w dziedzinie protokoªów transmisji i dost¦pu do danych, a ich
podstawowe zasady funkcjonowania niewiele si¦ zmieniªy.
Jednak wraz ze wzrostem liczby u»ytkowników, zag¦szczeniem w¦zªów sieci oraz ewolucj¡ struktury stron internetowych pojawiªy si¦ problemy wydajno±ciowe. Ich przyczyn¡ jest
ograniczona przepustowo±¢ ª¡czy oraz opó¹nienie transmisji danych. Pierwszy problem zostaª
zªagodzony za po±rednictwem algorytmów unikania przeci¡»enia sieci w warstwie transportowej (TCP), drugi jest adresowany przez mechanizmy poª¡cze« trwaªych, kompresji danych
oraz pami¦ci podr¦cznej w warstwie aplikacji (HTTP).
Dalsze usprawnienia wydajno±ci przeprowadzane s¡ w drodze odpowiedniej konguracji strony klienckiej i serwerowej, a tak»e optymalizuj¡c struktur¦ strony internetowej wraz
z zawarto±ci¡ zasobów zewn¦trznych. Wybór odpowiednich technik optymalizacyjnych zale»y
od charakterystyki witryny oraz jej zasobów i rzutuje na koszty wdro»enia i utrzymania takich rozwi¡za«. Dlatego te» warto przeprowadzi¢ eksperymentaln¡ analiz¦ dziaªania metod
optymalizacyjnych oraz werykacj¦ ich skuteczno±ci w kontek±cie wydajno±ci HTTP.
Innym interesuj¡cym zagadnieniem jest dalszy rozwój protokoªu, który wkrótce mo»e zosta¢ zaktualizowany do kolejnej wersji HTTP/2.0. Jest ona niekompatybilna wstecz, ale ma
szanse wdro»y¢ przeªomowe usprawnienia w kwestii redukcji opó¹nienia. Obecnie mechanizmy
te cz¦±ciowo funkcjonuj¡ w postaci eksperymentalnego protokoªu SPDY dost¦pnego w najnowszych wydaniach przegl¡darek internetowych.
7
Rozdziaª 1
Protokóª HTTP
Protokóª HTTP ewoluowaª przez kilkadziesi¡t lat, by sta¢ si¦ podstawowym kanaªem komunikacji dla najpopularniejszego medium informacji na ±wiecie jakim jest Internet. Kolejne wersje
protokoªu zostaªy zdeniowane w kilku dokumentach RFC (ang.
requests for comments ) i wi¡-
zaªy si¦ ze stopniowym wprowadzaniem ró»nych metod optymalizacji jego wydajno±ci.
1.1
Historia
Pocz¡tki protokoªu HTTP si¦gaj¡ lat osiemdziesi¡tych ubiegªego wieku, kiedy to Tim BernersLee stworzyª program
Enquire
pozwalaj¡cy na poruszanie si¦ pomi¦dzy dokumentami za po-
moc¡ odno±ników znajduj¡cych si¦ w ich tre±ci. Wkrótce dostarczona zostaªa równie» aplikacja
WorldWideWeb
skªadaj¡ca si¦ z edytora i gracznej przegl¡darki.
W 1990 roku pojawiª si¦ pierwszy serwer HTTP, który udost¦pniaª opis projektu WWW.
Na pocz¡tku lat dziewi¦¢dziesi¡tych zarejestrowanych byªo ponad 1500 serwerów, co wpªyn¦ªo
na gwaªtowny rozwój przegl¡darek gracznych:
Erwise, Viola, Netscape, Mosaic
(rys. 1.1).
Rysunek 1.1: Popularna w latach 90. przegl¡darka Mosaic.
Word Wide
Internet Engineering Task Force ) opublikoHypertext Markup Language ). W 1996 wydano
Wkrótce Tim Berners-Lee stan¡ª na czele utworzonego konsorcjum W3C (ang.
Web Consortium ),
natomiast grupa IETF (ang.
waªa ocjalny standard j¦zyka HTML (ang.
specykacj¦ HTTP/1.0 w postaci RFC 1945, a rok pó¹niej wprowadzono obecnie aktualn¡
wersj¦ HTTP/1.1 zawart¡ w dokumentach RFC 2068 i RFC 2616 [16].
8
1.2
Architektura
Protokóª HTTP (ang.
Hypertext Transfer Protocol ) jest protokoªem warstwy aplikacji przezna-
czonym dla rozproszonych i wspóªpracuj¡cych systemów informacyjnych. Bazuje on na warstwie TCP/IP odpowiedzialnej za niezawodn¡ komunikacj¦, jednak»e kanaªy zawodne takie
jak UDP, SSDP równie» mog¡ by¢ obsªugiwane (rys. 1.2). HTTP stanowi równie» podstaw¦
dla wielu rozwi¡za« wy»szego poziomu, np. REST (ang.
Representational State Transfer ) [24].
Rysunek 1.2: Klasykacja protokoªu HTTP w modelu warstwowym [31].
Pierwotnym zastosowaniem protokoªu byªo dostarczanie zasobów u»ytkownikom Internetu, najcz¦±ciej w formie dokumentów hipertekstowych, które tworz¡ sie¢ poª¡cze«. Jako »e
systemy informacyjne w ogólnym przypadku wymagaj¡ szerszej funkcjonalno±ci ni» pobieranie
dokumentu, wymagania dotycz¡ce wysyªania, modykacji oraz wyszukiwania danych równie»
uwzgl¦dniono podczas deniowania architektury protokoªu [49].
1.2.1 Transakcje
Model komunikacji oparty jest o wzorzec klient-serwer i wymian¦ komunikatów na zasadzie
transakcji »¡danie-odpowied¹ (ang.
request-response ),
których sekwencja okre±lana jest mia-
nem sesji. Domy±lnie z protokoªem skojarzony jest port 80.
W najbardziej typowym przypadku transmisji klient otwiera poª¡czenie i wysyªa do serwera »¡danie. Serwer otrzymuje »¡danie, przetwarza je, zwraca dpowied¹ oraz zamyka poª¡czenie (rys. 1.3). W ramach ka»dego komunikatu przesyªane mog¡ by¢ opcjonalne dane.
Rysunek 1.3: Wymiana komunikatów »¡danie-odpowied¹ [31].
9
Transakcyjny charakter komunikacji przekªada si¦ na nast¦puj¡ce cechy protokoªu:
Bezstanowo±¢
Protokóª nie wymaga przechowywania informacji o stanie sesji przez uczest-
ników komunikacji, co wpªywa na wi¦ksz¡ wydajno±¢ oraz niezawodno±¢.
Niezale»no±¢ danych
Protokóª obsªuguje negocjacj¦ reprezentacji oraz transfer danych do-
wolnego typu, pod warunkiem »e klient i serwer s¡ w stanie je obsªu»y¢.
Bezpoª¡czeniowo±¢
Ka»da transakcja lub zbiór logicznie powi¡zanych transakcji w postaci
»¡danie-odpowied¹ wymaga zestawienia nowego poª¡czenia klienta z serwerem.
1.2.2 Typy danych
W celu uªatwienia obsªugi zasobów ró»nego rodzaju protokóª HTTP wykorzystuje znaczniki
przypisywane do ka»dego komunikatu zawieraj¡cego dane (rys. 1.4). Format znakowania opisuje standard MIME (ang.
Multipurpose Internet Mail Extensions ),
który zaprojektowany
zostaª na potrzeby transmisji poczty elektronicznej, ale okazaª si¦ na tyle elastyczny, »e z powodzeniem znalazª zastosowanie w innych usªugach sieciowych [27].
Rysunek 1.4: Dane oznaczone typem MIME [31].
1.2.3 Adresowanie
Uniform Resource IdentiUniform Resource Name ) wskazuj¡cych
zasób jedynie przez nazw¦, niezale»nie od konkretnego poªo»enia, oraz adresów URL (ang. Uniform Resource Locator ) szczegóªowo opisuj¡cych miejsce i sposób dost¦pu do zasobu. Z tego
Ka»dy zasób sieci mo»e by¢ identykowany przez adres URI (ang.
er )
[9]. Jest on nadzbiorem dla adresów URN (ang.
wzgl¦du protokóª HTTP najcz¦±ciej wykorzysuje adresy URL (rys. 1.5).
Rysunek 1.5: Format adresu URL [31].
10
1.2.4 Metody dost¦pu
Ka»dy komunikat »¡dania okre±la metod¦ dost¦pu do zasobu, która determinuje operacj¦
wykonywan¡ przez serwer. Protokóª HTTP dostarcza predeniowany zbiór metod dost¦pu,
który jest implementacyjnie otwarty na rozszerzenia w jego kolejnych wydaniach (tab. 1.1).
Metoda
GET
HEAD
POST
PUT
DELETE
OPTIONS
TRACE
PATCH
Opis
Bezpieczna
Idempotentna
Pobranie zasobu.
Tak
Tak
Pobranie nagªówków z pomini¦ciem zasobu.
Tak
Tak
Przesªanie danych do przetworzenia.
Nie
Nie
Wysªanie i utrwalenie danych.
Nie
Tak
Usuni¦cie wskazanego zasobu.
Nie
Tak
Uzyskanie obsªugiwanych metod dost¦pu.
Tak
Tak
Diagnostyczna transmisja tam i z powrotem.
Tak
Tak
Cz¦±ciowa modykacja zasobu [22].
Nie
Nie
Tablica 1.1: Charakterystyka metod dost¦pu.
Metody GET, HEAD, OPTIONS, TRACE okre±la si¦ mianem bezpiecznych, poniewa»
sªu»¡ do pobierania danych bez zmiany stanu systemu. Natomiast metody POST, PUT oraz
DELETE mog¡ powodowa¢ skutki uboczne. Metody bezpieczne oraz dodatkowo PUT i DELETE maj¡ charakter idempotentny wiele jednakowych »¡da« ma skutek taki jak pojedyncze »¡danie. Wyj¡tkiem jest metoda POST, która z reguªy nie jest idempotentna i z ka»dym
wywoªaniem powoduje zmian¦ stanu systemu. Semantyka i idempotentno±¢ metod nie jest
jednak zale»na od protokoªu lub serwera, a od sposobu obsªugi »¡da« przez aplikacj¦ sieciow¡.
1.2.5 Format komunikatu
Ka»dy komunikat protokoªu HTTP skªada si¦ z nagªówka (ang.
danych (ang.
body ).
header )
oraz opcjonalnych
Format komunikatu zdeniowany jest w nast¦puj¡cy sposób (rys. 1.6):
Rysunek 1.6: Format komunikatu HTTP [31].
Linia inicjuj¡ca
Okre±la wersj¦ protokoªu, dodatkowo w przypadku »¡dania specykuje me-
tod¦ oraz ±cie»k¦ dost¦pu, natomiast dla odpowiedzi wskazuje status wykonanej operacji
skªadaj¡cy si¦ warto±ci liczbowej oraz opisu sªownego (aneks Statusy odpowiedzi).
Nagªówki
Odst¦p
Dane
Linie w formacie
klucz:warto±¢ opisuj¡ce komunikat i nadawc¦ (aneks Nagªówki).
Pusta linia.
Opcjonalne dane, których fragmenty poprzedzane s¡ odpowiadaj¡cymi im rozmiarami.
11
1.3
Problemy wydajno±ciowe
Optymalizacja wydajno±ci protokoªu HTTP jest nieko«cz¡cym si¦ przedsi¦wzi¦ciem, poniewa»
sposób korzystania z Internetu stale ewoluuje przegl¡darki przyspieszaj¡, aplikacje sieciowe
rozrastaj¡ si¦, a prole aktywno±ci u»ytkowników ulegaj¡ zmianom [67]. Mo»na wyszczególni¢
dwa czynniki wpªywaj¡ce na wydajno±¢ protokoªu (rys. 1.7):
Przepustowo±¢
Opó¹nienie
Maksymalna wielko±¢ transferu na ±cie»ce komunikacji w jednostce czasu.
Czas pomi¦dzy wysªaniem a odebraniem pakietu, obejmuje:
•
czas propagacji komunikatu (stosunek odlegªo±ci do pr¦dko±ci propagacji sygnaªu),
•
czas transmisji komunikatu (stosunek rozmiaru pakietu do przepustowo±ci ª¡cza),
•
czas przetwarzania nagªówka komunikatu i sprawdzania jego poprawno±ci,
•
czas oczekiwania na obsªu»enie komunikatu w kolejce po stronie odbiorcy.
Rysunek 1.7: Opó¹nienie a przepustowo±¢ sieci [33].
1.3.1 Znaczenie opó¹nienia
Na wielko±¢ opó¹nienia wpªywa odlegªo±¢ pomi¦dzy nadawc¡ i odbiorc¡, liczba w¦zªów po±rednich oraz nasycenie sieci. Z kolei przepustowo±¢ najcz¦±ciej zale»y od jako±ci usªug ±wiadczonych przez dostawc¦ poª¡czenia internetowego. Dost¦p do ª¡cza o du»ej przepustowo±ci
peªni istotn¡ rol¦ podczas transmisji danych znacznych rozmiarów (ang.
bulk data transfer ),
np. strumieniowania zawarto±ci audio/wideo. Jednak okazuje si¦, »e w przypadku przegl¡dania
stron, które skªadaj¡ si¦ z wielu zasobów, kluczow¡ rol¦ odgrywa opó¹nienie (rys. 1.8).
Wykres przedstawia wpªyw opó¹nienia oraz przepustowo±ci na czas pobierania strony.
W sytuacji zachowania staªego opó¹nienia i zmiany przepustowo±ci w zakresie 1-10 Mb/s
mo»na zauwa»y¢, »e poprawa parametrów z 1 do 2 Mb/s poªowicznie zwi¦ksza wydajno±¢
transferu, podczas gdy wzrost w zakresie 5-10 Mb/s skutkuje zaledwie 5% skróceniem czasu
12
Rysunek 1.8: Wpªyw opó¹nienia i przepustowo±ci sieci na czas ªadowania strony [6].
ªadowania strony. Natomiast w przypadku staªej przepustowo±ci i zmiany opó¹nienia ka»da
redukcja wielko±ci 20 ms przekªada si¦ na liniowe zmniejszenie czasu pobierania dokumentu.
W celu zwi¦kszenia wydajno±ci Internetu w globalnej skali istotne jest ograniczenie opó¹nienia pomi¦dzy klientem a serwerem. Redukcja czasu p¦tli zwrotnej (ang.
time )
RTT round-trip
z 150 do 100 ms mi¦dzy kontynentami w ogólnym przypadku b¦dzie miaªa wi¦kszy
wpªyw na komfort korzystania z sieci ni» zwi¦kszenie przepustowo±ci z 4 do 15 Mb/s. Innym
sposobem jest ograniczenie liczby »¡da« ze strony klienta, których nadmiar wyra¹nie rzutuje
na sumaryczn¡ wielko±¢ opó¹nienia.
1.3.2 Wpªyw opó¹nienia na percepcj¦ u»ytkownika
Nie ulega w¡tpliwo±ci, »e projektuj¡c interaktywne oprogramowanie nale»y mie¢ na uwadze
zdolno±¢ percepcji oraz komfort pracy u»ytkownika (ang.
user experience ),
zwªaszcza w za-
kresie responsywno±ci aplikacji, co okre±laj¡ nast¦puj¡ce progi czasu odpowiedzi (tab. 1.2).
Opó¹nienie
Percepcja u»ytkownika
0-100 ms
Natychmiastowe dziaªanie aplikacji, wysoki komfort pracy.
100-300 ms
Ledwo zauwa»alne opó¹nienie, du»a wygoda pracy.
300-1000 ms
Dostrzegalne niewielkie przestoje, satysfakcjonuj¡cy poziom pracy.
1000+ ms
Wyra¹ne przerwy, utrata koncentracji u»ytkownika.
5000+ ms
Odczuwalne znaczne opó¹nienie, uczucie frustracji.
10000+ ms
Zbyt dªugi czas oczekiwania, porzucenie czynno±ci.
Tablica 1.2: Wpªyw opó¹nienia na percepcj¦ u»ytkownika [64].
Opó¹nienie na poziomie kilkuset milisekund zapewnia pªynno±¢ aplikacji i wygod¦ pracy
u»ytkownika. Konieczno±¢ oczekiwania na odpowied¹ aplikacji rz¦du kilku sekund zaburza
pªynno±¢ interakcji z aplikacj¡ i wzmaga uczucie niecierpliwo±ci u»ytkownika, a przekroczenie
granicy 10 sekund mo»e prowadzi¢ do rezygnacji z wykonywanego zadania. Obrazuje to istot¦
opó¹nienia i konieczno±¢ jego redukcji w celu poprawy wydajno±ci oprogramowania.
13
1.3.3 Wpªyw opó¹nienia na transakcje HTTP
Opó¹nienia sieci s¡ istotnym problemem wydajno±ciowym w kontek±cie pojedynczej transakcji HTTP. Zazwyczaj czas przetwarzania »¡dania przez serwer jest niewielki w porównaniu
do czasu zwi¡zanego z obsªug¡ poª¡czenia i transmisj¡ danych (rys. 1.9).
Rysunek 1.9: Przebieg pojedynczej transakcji [31].
Nawi¡zanie poª¡czenia zgodnie z zasad¡ trójfazowego porozumienia (ang.
shake )
three-way handslow start,
zajmuje caªy okres RTT, po czym protokóª TCP dziaªa wedªug algorytmu
którego celem jest wst¦pne oszacowanie przepustowo±ci sieci poprzez stopniowe zwi¦kszanie
ilo±ci przesyªanych danych [37]. W praktyce cz¦sto zdarza si¦, »e transakcja dobiega ko«ca
i poª¡czenie zamykane jest przed zako«czeniem dziaªania algorytmu, co degraduje stopie«
wykorzystania mechanizmów unikania przeci¡»enia [36]. Opó¹nienia warstwy transportowej
pot¦guj¡ si¦ szczególnie w przypadku sekwencyjnej wymiany komunikatów (rys. 1.10).
Rysunek 1.10: Przebieg sekwencji transakcji [31].
1.4
Optymalizacja
Poprawa aspektów wydajno±ciowych byªa jednym z celów standardu HTTP/1.1, co poskutkowaªo wprowadzeniem licznych udoskonale«, gªównie w zakresie zarz¡dzania poª¡czeniami [28]:
1.4.1 Poª¡czenia równolegªe
Protokóª umo»liwia klientowi zestawianie wielu poª¡cze« w celu realizacji kilku transakcji
HTTP w sposób równolegªy (ang.
parallel connections ).
W rezultacie opó¹nienia poszczegól-
nych transmisji nakªadaj¡ si¦, a dost¦pne pasmo przydzielane jest do nowych poª¡cze«, co
cechuje si¦ wi¦ksz¡ wydajno±ci¡ ni» podej±cie sekwencyjne (rys. 1.11).
14
Rysunek 1.11: Przebieg poª¡cze« równolegªych [31].
Nale»y jednak mie¢ na uwadze, »e tworzenie du»ej liczby poª¡cze« równolegªych skutkuje
rywalizacj¡ o dost¦p do pasma oraz wzrostem zu»ycia zasobów sprz¦towych klienta i serwera. Z tego wzgl¦du przegl¡darki ograniczaj¡ liczb¦ poª¡cze« równolegªych przypadaj¡cych
na serwer w zakresie 2-6, ponadto serwer mo»e w ka»dej chwili zamkn¡¢ poª¡czenia od klienta
zestawiaj¡cego ich zbyt wiele.
1.4.2 Poª¡czenia trwaªe
persistent connections ),
keep-alive znany z HTTP/1.0.
Gªównym ulepszeniem jest wprowadzenie poª¡cze« trwaªych (ang.
które stanowi¡ uzupeªniony i ustandaryzowany mechanizm
W odró»nieniu od pierwotnego podej±cia polegaj¡cego na zamykaniu poª¡czenia po otrzymaniu odpowiedzi na »¡danie, koncepcja ta polega na pozostawianiu otwartego poª¡czenia dla przyszªych transakcji do momentu zamkni¦cia go przez jedn¡ z komunikuj¡cych si¦
stron [51]. W ten sposób wielokrotne wykorzystanie poª¡czenia eliminuje konieczno±¢ ka»dorazowego nawi¡zywania i zamykania obwodu komunikacji, a tak»e pozwala na efektywne dziaªanie algorytmu
slow start
bez konieczno±ci jego powtarzania dla ka»dej transakcji (rys. 1.12).
Rysunek 1.12: Przebieg poª¡czenia trwaªych [31].
W obliczu transmisji
czasu wielko±ci
(N − 1)
N
»¡da«, mechanizm poª¡cze« trwaªych pozwala na oszcz¦dzenie
okresów RTT w porównaniu do pierwotnego podej±cia nawi¡zywania
poª¡czenia dla ka»dej transakcji. W kompozycji z poª¡czeniami równolegªymi jest to istotne
usprawnienie, zwªaszcze »e wy±wietlenie strony internetowej wi¡»e si¦ z pobraniem ±rednio
kilkudziesi¦ciu zasobów zewn¦trznych (rozdz. 4).
15
1.4.3 Poª¡czenia potokowe
Innym udoskonaleniem jest mechanizm potokowego wysyªania komunikatów w obr¦bie poª¡cze« trwaªych (ang.
pipelined connections ).
Stanowi on dalsz¡ optymalizacj¦ protokoªu podczas gdy poª¡czenia trwaªe redukuj¡ narzut otwarcia/zamkni¦cia wirtualnego obwodu pomi¦dzy klientem i serwerem, poª¡czenia potokowe eliminuj¡ czas oczekiwania na mo»liwo±¢
transmisji kolejnego »¡dania, co ma istotne znaczenie w sieciach o du»ym opó¹nieniu [54].
Domy±lnie protokóª HTTP narzuca konwencj¦ wymiany komunikatów w formie »¡danieodpowied¹, z konieczno±ci¡ kolejkowania nowego »¡dania po stronie klienta do momentu otrzymania odpowiedzi na poprzednie zapytanie (ang.
request queuing ).
Koncepcja potokowania
pozwala na wysyªanie wielu »¡da«, a serwer przetwarza je, na bie»¡co kolejkuj¡c i przesyªaj¡c
odpowiedzi do klienta (ang.
response queuing ).
Przeniesienie kolejki komunikatów od klienta
do serwera pozwala skróci¢ czas obsªugi wszystkich »¡da« nawet do 2 okresów RTT (rys. 1.13).
Rysunek 1.13: Przebieg potokowania komunikatów [31].
Istotnym ograniczeniem mechanizmu poª¡cze« potokowych jest konieczno±¢ transmisji odpowiedzi we wªa±ciwej kolejno±ci, gdy» protokóª nie wspiera numerowania i przeplatania komunikatów. Wówczas oczekiwanie na obsªu»enie czasochªonnego »¡dania (ang.
blocking )
head-of-line
skutkuje niedostatecznym wykorzystaniem pasma oraz kosztami buforowania ju»
wygenerowanych odpowiedzi. Równie» obsªuga zerwanych poª¡cze« powoduje problem reemisji sekwencji komunikatów i powtórnego przetwarzania ich po stronie serwera.
Poª¡czenia potokowe nie upowszechniªy si¦ z powodu wymienionych komplikacji. Pomimo
tego, koncepcja potokowania komunikatów jest z powodzeniem stosowana w ±rodowisku, gdzie
klient i serwer s¡ ze sob¡ implementacyjnie sprz¦»one. Przykªadem jest infrastruktura aplikacji
iTunes,
która dzi¦ki zastosowaniu potokowania istotnie zwi¦kszyªa wydajno±¢ protokoªu [32].
Mechanizm komunikacji Wielko±¢ opó¹nienia
Transakcje sekwencyjne
Poª¡czenie trwaªe
Poª¡czenie potokowe
Poª¡czenia równolegªe
Requests ∗ 2 ∗ RT T
(Requests + 1) ∗ RT T
2 ∗ RT T
Latency/Connections
Tablica 1.3: Wielko±¢ opó¹nienia dla ró»nych mechanizmów komunikacji [58].
Podsumowuj¡c, mechanizmy dostarczone przez standard HTTP/1.1 stanowi¡ skuteczn¡
optymalizacj¦ protokoªu i zapewniaj¡ znaczn¡ redukcj¦ opó¹nienia transmisji (tab. 1.3).
16
Rozdziaª 2
Klient HTTP
Strona kliencka (ang.
user agent )
reprezentowana jest przez aplikacj¦ wysyªaj¡c¡ »¡dania
do serwera w postaci komunikatów protokoªu. W ogólno±ci mo»e to by¢ ka»de oprogramowanie
pobieraj¡ce i przetwarzaj¡ce zasoby sieci narz¦dzia linii polece« (curl,
wget ),
roboty inter-
netowe (Googlebot ) oraz przegl¡darki internetowe. Obecnie najpowszechniej u»ywanymi przegl¡darkami s¡: Google Chrome, Internet Explorer, Mozilla Firefox, Safari i Opera (rys. 2.1).
Rysunek 2.1: Popularno±¢ przegl¡darek internetowych [68].
2.1
Funkcjonalno±¢
Podstawowym zadaniem przegl¡darki internetowej (ang.
web browser )
jest pobranie wskaza-
nego zasobu oraz przedstawienie go w sposób czytelny dla u»ytkownika. W trywialnym przypadku transmisji pojedynczego zasobu, proces ten przebiega w nast¦puj¡ce sposób (rys. 2.2):
1. Translacja adresu URL przez usªug¦ DNS.
2. Nawi¡zanie poª¡czenia.
3. Wysªanie »¡dania do serwera.
4. Otrzymanie odpowiedzi serwera.
5. Zamkni¦cie poª¡czenia.
17
Rysunek 2.2: Schemat dziaªania przegl¡darki [31].
2.2
Architektura
Wspóªczesne przegl¡darki s¡ bardzo podobne w kontek±cie architektury. Najcz¦±ciej skªadaj¡
si¦ one z nast¦puj¡cych komponentów o jasno zdeniowanych odpowiedzialno±ciach (rys. 2.3):
Interfejs u»ytkownika
Silnik przegl¡darki
Silnik renderuj¡cy
Warstwa sieciowa
Warstwa graki
Interpreter
Umo»liwia interakcj¦ poprzez przyciski, karty, pasek adresu.
Przekazuje zdarzenia z interfejsu u»ytkownika do silnika renderuj¡cego.
Parsuje, interpretuje i wy±wietla zawarto±¢ »¡danego zasobu.
Obsªuguje transmisj¦ komunikatów HTTP i pobieranie zasobów.
Wy±wietla zasób w postaci gracznej interpretacji.
Parsuje i wykonuje kod JavaScript.
Warstwa danych
Magazyn przechowuj¡cy dane trwaªe.
18
Rysunek 2.3: Gªówne komponenty gracznej przegl¡darki internetowej [35].
Sposób interpretacji i wy±wietlania zasobów zdeniowany jest w specykacjach HTML
i CSS. Przez lata przegl¡darki tylko cz¦±ciowo dostosowywaªy si¦ do ocjalnych wytycznych,
co sprawiaªo wiele trudno±ci twórcom stron internetowych, gªównie w kwestii kompatybilno±ci.
Obecnie sytuacja ulegªa zmianie i przegl¡darki w znacznym stopniu realizuj¡ standardy.
Z drugiej strony, wspóln¡ cech¡ wszystkich przegl¡darek gracznych jest wygl¡d interfejsu
u»ytkownika. Aspekt ten nie zostaª w »aden sposób formalnie wyspecykowany, wywodzi si¦
natomiast z praktyk projektowych sprawdzonych na przestrzeni lat rozwoju przegl¡darek oraz
tendencji wzajemnego imitowania si¦ tych aplikacji.
2.3
Zasada dziaªania
Proces wy±wietlania strony obejmuje parsowanie kodu HTML, ewaluacj¦ arkuszy styli, wykonanie skryptów i renderowanie rezultatu na urz¡dzeniu wyj±ciowym (rys. 2.4):
Rysunek 2.4: Schemat budowania reprezentacji strony internetowej.
2.3.1 Pobieranie zasobów
Przegl¡darka pobiera kod HTML ze wskazanej lokalizacji oraz dostarcza zasoby zewn¦trzne,
co odbywa si¦ w osobnym potoku pobierania. Istotn¡ rol¦ odgrywa mechanizm pami¦ci podr¦cznej, który zapobiega ponownym transferom wcze±niej dostarczonych danych. Otrzymany
strumie« danych traa na wej±cie parsera (rys. 2.5).
19
Rysunek 2.5: Schemat parsowania dokumentu HTML.
2.3.2 Budowa drzewa DOM
Parser odpowiedzialny jest za budow¦ drzewa DOM (ang.
document object model ),
którego
w¦zªy reprezentuj¡ elementy HTML (rys. 2.6). Odniesienia do zasobów zewn¦trznych napotkane przez parser umieszczane s¡ w kolejce pobierania. Obecnie wiele stron internetowych
jest przestarzaªych, dlatego przegl¡darki udost¦pniaj¡ tryb zgodno±ci (ang.
quirks mode ).
Rysunek 2.6: Schemat budowy drzewa DOM.
2.3.3 Budowa drzewa CSSOM
Struktura strony deniowana jest za pomoc¡ kodu HTML, natomiast do specykacji wygl¡du
cascade style sheet ). Arkusz parsowany jest do postaci drzewa CSSOM
CSS object model ), którego w¦zªy reprezentuj¡ reguªy i selektory (rys. 2.7).
sªu»y arkusz CSS (ang.
(ang.
Rysunek 2.7: Schemat budowy drzewa CSSOM.
20
2.3.4 Budowa drzewa renderowania
Rezultatem poª¡czenia obiektów DOM i CSSOM jest drzewo renderowania (ang.
tree ).
rendering
Skªada si¦ ono z ramek opisuj¡cych sposób wy±wietlania elementów (rys. 2.8).
Rysunek 2.8: Schemat budowy drzewa renderowania.
2.3.5 Rozkªad ramek
Model renderowania (ang.
rendering model )
deniuje proces rozkªadania ramek (rys. 2.9),
który przebiega rekurencyjnie od korzenia do li±ci drzewa renderowania i ze wzgl¦dów wydajno±ciowych wykonywany jest jedynie w razie konieczno±ci (ang.
lazy layout ).
Rysunek 2.9: Schemat rozkªadania ramek.
2.3.6 Wy±wietlenie strony
Odrysowanie elementów strony równie» odbywa si¦ w sposób rekurencyjny przechodz¡c po w¦zªach drzewa renderowania. Proces ten mo»e by¢ cz¦±ciowo powtarzany ze wzgl¦du na dynamiczne zmiany zawarto±ci drzew DOM/CSSOM przez kod JavaScript. Za renderowanie
sprz¦towe odpowiada moduª graczny systemu operacyjnego, który realizuje je w nadmiarowej rozdzielczo±ci w celu optymalizacji skalowania widoku (ang.
21
zooming ).
2.4
Analiza dziaªania
Powszechnie wykorzystywanym sposobem analizy wydajno±ci przegl¡darki jest inspekcja kaskadowego widoku pobierania strony internetowej i jej zasobów (ang.
resource waterfall ).
Do jego uzyskania mo»na wykorzysta¢ rozszerzenie przegl¡darki lub serwis internetowy automatyzuj¡cy ten proces. Na potrzeby stworzenia kaskadowego widoku dla witryny
wy±wietlanej w przegl¡darce Firefox 23 posªu»ono si¦ narz¦dziem
WebPageTest.org
mit.edu
(rys. 2.10).
Rysunek 2.10: Kaskadowy widok zasobów.
Otrzymany widok pozwala na analiz¦ struktury dokumentu oraz sposobu dziaªania przegl¡darki. Mo»na zauwa»y¢, »e parsowanie kodu HTML odbywa si¦ w sposób przyrostowy,
umo»liwiaj¡c dynamiczne wykrycie odwoªania do zasobu zewn¦trznego i równolegªe wysªanie »¡dania tego obiektu, co objawia si¦ kaskadowym charakterem widoku. Mo»na zauwa»y¢,
»e klient wi¦kszo±¢ czasu sp¦dza na translacji adresów, zestawianiu poª¡cze« oraz oczekiwaniu na odpowied¹ serwera samo pobieranie danych stanowi uªamek caªkowitego opó¹nienia.
Sposób zarz¡dzania strumieniami TCP przedstawiono za pomoc¡ widoku poª¡cze« (rys. 2.11).
Rysunek 2.11: Widok poª¡cze«.
Sumarycznie, pobranie dokumentu i wszystkich zasobów zewn¦trznych zaj¦ªo 2974 ms,
z czego 2469 ms upªyn¦ªo na operacjach sieciowych (8 translacji adresów i 12 poª¡cze«) co
stanowi a» 83% caªego czasu. Dzi¦ki wykorzystaniu trwaªych i równolegªych strumieni TCP
oraz naªo»eniu opó¹nienia udaªo si¦ pobra¢ wszystkie zasoby w czasie 1015 ms. Transmisja
cechowaªa si¦ oszcz¦dnym zu»yciem przepustowo±ci ª¡cza (poni»ej 5 kB/s), co wskazuje raczej
na opó¹nienie jako gªówny problem w kontek±cie wydajno±ci pobierania stron internetowych.
22
2.5
Optymalizacja
Mimo »e przegl¡darka z perspektywy u»ytkownika jawi si¦ jako prosta aplikacja pobieraj¡ca i wy±wietlaj¡ca strony internetowe, to od strony implementacyjnej jest to rozbudowane
i skomplikowane oprogramowanie. Jak potwierdza nieustanna rywalizacja pomi¦dzy twórcami
przegl¡darek, rozwój tych aplikacji skupia si¦ wokóª optymalnego wykorzystania mechanizmów sieciowych oraz zwi¦kszenia wydajno±ci protokoªu HTTP, do których przyczyniaj¡ si¦
ni»ej opisane usprawnienia.
2.5.1 Równolegªo±¢ transferu i przetwarzania
Wspóªczesne przegl¡darki wykorzystuj¡ równolegªe poª¡czenia trwaªe w celu redukcji czasu
dostarczenia strony internetowej u»ytkownikowi ko«cowemu. Specykacja protokoªu HTTP
zaleca ograniczenie poª¡cze« trwaªych do 2 na serwer, jednak»e w praktyce limit ten cz¦sto
si¦ga 6 poª¡cze«. Warto równie» zrobi¢ u»ytek z mechanizmu poª¡cze« potokowych, który
cz¦sto mo»e zosta¢ aktywowany za po±rednictwem zaawansowanych ustawie« aplikacji. Ponadto z biegem czasu architektura przegl¡darek przeksztaªciªa si¦ z modelu jednoprocesowego
w wieloprocesowy. Pozwala ona na zrównoleglenie przetwarzania, zmniejszenie przywilejów
skryptów, izolacj¦ potencjalnie zªo±liwego kodu oraz zwi¦kszenie stabilno±ci.
2.5.2 Priorytetyzacja zasobów
W trakcie parsowania drzewa DOM napotkane zasoby zewn¦trzne zazwyczaj pobierane s¡
zgodnie z kolejno±ci¡ wyst¦powania w dokumencie, jednak»e przegl¡darka cz¦sto dokonuje
optymalizacji priorytetyzuj¡c je zgodnie z sekwencj¡: arkusze styli, skrypty, pozostaªe zasoby.
Uzasadnione jest to tym, »e arkusze styli nie maj¡ wpªywu na struktur¦ drzewa DOM, zatem
parsowanie dokumentu mo»e by¢ równolegle kontynuowane podczas ich pobierania i ewaluacji.
Natomiast skrypty mog¡ odwoªywa¢ si¦ do informacji zawartych w arkuszach styli, dlatego
te» w celu unikni¦cia bª¦dów wykonania powinny by¢ one dostarczone w nast¦pnej kolejno±ci.
2.5.3 Skanowanie wyprzedzaj¡ce
Ze wzgl¦du na to, »e skrypty mog¡ modykowa¢ struktur¦ drzewa DOM, proces parsowania
dokumentu nie mo»e post¦powa¢ dopóki napotkany skrypt nie zostanie wykonany. Wstrzymanie parsowania sprawia, »e pobieranie dalszych zasobów równie» jest zablokowane, a mechanizm równolegªego transferu pozostaje niewykorzystany. Rozwi¡zaniem tej niedogodno±ci
jest uruchomienie skanera wyprzedzaj¡cego (ang.
lookahead scanner ), który wyszukuje zasoby
do pobrania w dalszej cz¦±ci dokumentu.
2.5.4 Ograniczenie rozmiaru »¡da«
Nagªówki HTTP przesyªane s¡ w postaci nieskompresowanego tekstu na potrzeby zgodno±ci
wstecznej, co cz¦sto stanowi znaczny narzut na rozmiar komunikatu. Dodatkowym obci¡»eniem s¡ ciasteczka przesyªane z serwera do przegl¡darki i pó¹niej doª¡czane do ka»dego »¡dania (rys. 2.12). ‘rednio nagªówki komunikatu HTTP zajmuj¡ 500-800 bajtów, ewentualnie
powi¦kszone o rozmiar ciasteczek rz¦du kilku kilobajtów. Przegl¡darki cz¦sto ograniczaj¡ rozmiar ciasteczek do 4 KB, jednak w przypadku wielu takich obiektów wysªanych przez serwer,
stanowi¡ one powa»ny narzut. Rozwi¡zaniem tego problemu jest dalsze ograniczenie rozmiaru
ciasteczek lub caªkowite ich zablokowanie (kosztem utraty funkcjonalno±ci zachowania stanu
np. zarz¡dzanie sesjami, personalizacja interfejsu, prowadzenie statystyk, etc.) [41].
23
Rysunek 2.12: Schemat dziaªania mechanizmu ciasteczek [31].
2.5.5 Pami¦¢ podr¦czna DNS
Tªumaczenie adresu URL na numer IP za pomoc¡ usªugi DNS zajmuje zwykle 20-120 ms
i do tego czasu przegl¡darka nie mo»e pobra¢ zasobu, którego translacja dotyczy. W celu
zwi¦kszenia wydajno±ci wyniki tego procesu przechowywane s¡ w pami¦ci podr¦cznej na serwerze dostawcy internetowego oraz lokalnie w systemie operacyjnym i przegl¡darce. Zale»nie
od przegl¡darki, wpisy w pami¦ci podr¦cznej uniewa»niane s¡ po okresie 1-30 minut, jednak
korzystnym rozwi¡zaniem jest przedªu»enie tego czasu nawet do 60 minut [4].
2.5.6 Akcje wyprzedzaj¡ce
Nowatorskim rozwi¡zaniem jest mechanizm uczenia si¦ przegl¡darki i przewidywania akcji
u»ytkownika (tab. 2.1). Na podstawie sugestii zawartej w dokumencie HTML, wykrytego
wzorca nawigacji pomi¦dzy stronami lub najechania kursorem na odno±nik mo»na okre±li¢
prawdopodobie«stwo przyszªego wykorzystania danego zasobu [26]. Je±li jest ono znaczne, zapytanie DNS, zestawienie poª¡czenia TCP, transfer danych oraz renderowanie b¦dzie odbywa¢
si¦ z wyprzedzeniem, co mo»e zredukowa¢ czas oczekiwania o kilka okresów RTT.
Sugestia akcji wyprzedzaj¡cej
<link
<link
<link
<link
rel="dns-prefetch" href="abc.com">
rel="subresource" href="script.js">
rel="prefetch" href="image.jpg">
rel="prerender" href="about.html">
Opis
Translacja DNS adresu URL
Pobranie zasobu zaª¡czonego dalej na stronie
Pobranie zasobu na bie»¡cy lub przyszªy u»ytek
Prerenderowanie wskazanej strony
Tablica 2.1: Sugestie akcji wyprzedzaj¡cych.
24
2.6
Parametryzacja
Wspóªczesne przegl¡darki udost¦pniaj¡ wiele mo»liwo±ci konguracyjnych zwi¡zanych z dziaªaniem protokoªu HTTP. Domy±lne warto±ci parametrów protokoªu s¡ optymalne dla wi¦kszo±ci stron internetowych, ich modykacja mo»e jednak poprawi¢ wydajno±¢ w niektórych
przypadkach. Dost¦pne opcje parametryzacji dla ró»nych przegl¡darek przedstawiono poni»ej.
Firefox
Przegl¡darka Firefox udost¦pnia narz¦dzie sªu»¡ce do konguracji zaawansowanych ustawie«
aplikacji pod adresem
about:config.
Wiele zmiennych dotyczy protokoªu HTTP (tab. 2.2).
Nazwa
keep-alive
keep-alive.timeout
max-connections
max-connections-per-server
max-persistent-connections-per-server
pipelining
pipelining.maxrequests
Warto±¢
True
300
Opis
Aktywacja poª¡cze« trwaªych.
Czas bezczynno±ci poª¡cze« trwaªych.
30
Limit poª¡cze«.
15
Limit poª¡cze« na serwer.
6
True
4
Limit poª¡cze« trwaªych na serwer.
Aktywacja poª¡cze« potokowych.
Limit »¡da« poª¡czenia potokowego.
Tablica 2.2: Wybrane parametry przegl¡darki Firefox.
Opera
Przegl¡darka Opera dostarcza narz¦dzie konguracyjne pod adresem
opera:config. Odszuka-
nie parametrów protokoªu HTTP jest trudne, gdy» znajduj¡ si¦ w ró»nych sekcjach (tab. 2.3).
Nazwa
Warto±¢
Enable Pipeling
True
Max Connections Server
Max Connections Total
Max Persistent Connections Server
No Connection Keepalive
Aktywacja poª¡cze« potokowych.
8
Limit poª¡cze« na serwer.
20
Caªkowity limit poª¡cze«.
6
False
HTTP Idle Timeout
Opis
(brak)
Limit poª¡cze« trwaªych na serwer.
Dezaktywacja poª¡cze« trwaªych.
Maksymalny czas bezczynno±ci.
Tablica 2.3: Wybrane parametry przegl¡darki Opera.
Google Chrome
Przegl¡darka Google Chrome pozwala na modykacj¦ zaawansowanych ustawie« pod adresem
about:flags,
jednak»e znikoma ich liczba dotyczy protokoªu HTTP (tab. 2.4).
Nazwa
Warto±¢
Opis
HTTP Pipeling
False
Aktywacja poª¡cze« potokowych.
Enable SPDY/3
False
Aktywacja protokoªu SPDY.
Tablica 2.4: Wybrane parametry przegl¡darki Google Chrome.
25
Rozdziaª 3
Serwer HTTP
Rol¡ serwera implementuj¡cego protokóª HTTP jest udost¦pnianie zasobów oraz dostarczenie
narz¦dzi administracyjnych umo»liwiaj¡cych dostosowanie i rozszerzanie jego funkcjonalno±ci.
Do obsªugi »¡da« w du»ej mierze wykorzystywany jest system operacyjny, który odpowiada
za obsªug¦ stosu TCP/IP, dost¦p do systemu plików oraz zarz¡dzanie procesami i w¡tkami.
Obecnie do najpopularniejszych serwerów nale»¡:
Apache, Microsoft-IIS, Nginx
Rysunek 3.1: Popularno±¢ serwerów HTTP [53].
3.1
Funkcjonalno±¢
Wymagania stawiane wspóªczesnym serwerom obejmuj¡:
•
wielozadaniowo±¢, wydajne obsªugiwanie wielu »¡da« na raz,
•
zapewnienie bezpiecze«stwa, werykacja u»ytkowników i przywilejów,
•
mechanizm obsªugi bª¦dów,
•
mechanizm negocjacji reprezentacji zasobu z klientem,
•
wsparcie wielu j¦zyków i formatów zasobów,
•
tworzenie wielu serwerów wirtualnych na jednym interfejsie sieciowym.
26
(rys. 3.1).
3.2
Architektura
Zale»nie od architektury serwery HTTP s¡ w stanie obsªu»y¢ od pojedynczego komunikatu
do tysi¡ca równolegªych »¡da« klientów (rys. 3.2).
Rysunek 3.2: Ró»ne sposoby obsªugi operacji wej±cia/wyj±cia przez serwer HTTP [31].
Obecnie wspóªistniej¡ 2 popularne i wysokowydajne architektury serwerów wieloprzepªywowa oraz zdarzeniowa. Oprócz tego pojawiª si¦ zaawansowany wariant ª¡cz¡cy oba te
podej±cia i zapewniaj¡cy du»¡ skalowalno±¢ rozwi¡zania [59].
3.2.1 Podej±cie wieloprzepªywowe
Architektura wieloprzepªywowa bazuje na synchronicznym wykonywaniu operacji wej±ciawyj±cia. Nadchodz¡ce »¡dania przetwarzane s¡ w obr¦bie osobnych przepªywów instrukcji
(w¡tek, proces) tworzonych w razie potrzeby lub z wyprzedzeniem (ang.
worker pool ).
Dzi¦ki
temu nadchodz¡ce komunikaty mog¡ by¢ izolowane i obsªugiwane równolegle [69].
Wieloprocesowo±¢
Wedªug pierwotnej koncepcji do obsªugi poª¡cze« delegowano procesy, co pozwala na ªatw¡
izolacj¦ »¡da«, gdy» nie dziel¡ one wspólnej pami¦ci. Jako »e powoªywanie procesów jest
kosztowne pod wzgl¦dem zu»ywanych zasobów sprz¦towych, rozwi¡zaniem jest tworzenie ich
na pocz¡tku, a nast¦pnie wielokrotne u»ywanie (rys. 3.3).
27
Rysunek 3.3: Schemat wieloprocesowej obsªugi »¡da« [23].
Wielow¡tkowo±¢
Oprócz wieloprocesowego przetwarzania »¡da«, z czasem upowszechniªo si¦ podej±cie wykorzystuj¡ce w¡tki, które stanowi¡ l»ejsz¡ jednostk¦ przepªywu. Gªówn¡ ró»nic¡ jest wspóªdzielenie
przestrzeni adresowej i konieczno±¢ synchronizacji dost¦pu do wspólnych zasobów, jednak przy
mniejszym obci¡»eniu pami¦ciowym.
W praktyce, zastosowanie w¡tków polega na otrzymywaniu nowych poª¡cze« przez dyspozytora, który umieszcza je w kolejce obsªugiwanej przez pul¦ w¡tków (rys. 3.4). W ten sposób
ªatwo mo»na kontrolowa¢ liczb¦ obsªugiwanych poª¡cze« oraz aktywnych w¡tków, co pozwala
na unikni¦cie przeci¡»enia serwera.
Rysunek 3.4: Schemat wielow¡tkowej obsªugi »¡da« [23].
3.2.2 Podej±cie zdarzeniowe
Alternatyw¡ dla synchronicznych, blokuj¡cych operacji wej±cia-wyj±cia jest podej±cie zdarzeniowe (ang.
event-driven ).
Zdarzenia mog¡ by¢ generowane przez ¹ródªa takie jak gniazda
sieciowe, potoki, pliki, których stan wej±cia-wyj±cia jest monitorowany pod k¡tem aktywno±ci
(ang.
multiplexed I/O ).
Pojawiaj¡ce si¦ w ten sposób zdarzenia konsumowane s¡ przez p¦tl¦
zdarze« i sekwencyjnie przekazywane do skojarzonych procedur obsªugi.
28
Wzorzec Reactor
Wzorzec
Reactor
oparty jest o synchroniczn¡ i nieblokuj¡c¡ obsªug¦ operacji wej±cia-wyj±cia.
Idea polega na zarejestrowaniu zasobów i generowanych przez nie zdarze« (np. gniazdo i nowe
poª¡czenie). Do ka»dego zdarzenia kojarzona jest równie» funkcja obsªugi (ang.
callback ) [63].
Gªównym komponentem jest synchroniczny demultiplekser, który w obliczu wyst¡pienia
zdarzenia w kontek±cie zarejestrowanego zasobu powiadamia dyspozytora (ang.
dispatcher )
wywoªuj¡cego w odpowiedzi skojarzon¡ funkcj¦ obsªugi (rys. 3.5).
Rysunek 3.5: Schemat przetwarzania zdarze« [23].
Wzorzec Proactor
Z kolei
Proactor
jest asynchronicznym wariantem wzorca
Reactor.
Gªównym komponentem
jest proaktywny inicjator odpowiedzialny za wyzwolenie operacji wej±cia-wyj±cia oraz zarejestrowanie procedury obsªugi wraz z odpowiednim dyspozytorem, który w ramach obsªugi
zdarzenia wywoªuje podan¡ funkcj¦. Nadzór nad obªug¡ operacji peªni asynchroniczny zarz¡dca, który zazwyczaj stanowi cz¦±¢ systemu operacyjnego [60].
Rozwi¡zanie hybrydowe
Najbardziej skalowalnym rozwi¡zaniem jest poª¡czenie cech architektury wieloprzepªywowej
oraz zdarzeniowej, czego rezultatem jest podej±cie hybrydowe. Przykªadem mo»e by¢ podziaª
logiki serwera na etapy przetwarzania »¡da«, które s¡ przekazywane mi¦dzy nimi za po±rednictwem kolejek (rys. 3.6). Ka»dy etap obsªugiwany jest przez niezale»n¡ pul¦ w¡tków kongurowaln¡ zale»nie od obci¡»enia, co pozwala na efektywne wykorzystanie mocy obliczeniowej [71].
Rysunek 3.6: Schemat wieloetapowego przetwarzania »¡da« [23].
29
3.3
Zasada dziaªania
Do obowi¡zku wi¦kszo±ci serwerów HTTP nale»y wykonywanie dalej opisanych zada« (rys. 3.7).
Rysunek 3.7: Schemat zasady dziaªania serwera HTTP [31].
3.3.1 Przyj¦cie poª¡czenia
Je±li klient zestawiª poª¡czenie trwaªe do serwera, mo»e je wykorzysta¢ do wysªania »¡dania,
w przeciwnym wypadku konieczne jest nawi¡zanie nowego (rys. 3.8). O ile to mo»liwe, serwer
akceptuje poª¡czenie i monitoruje pod k¡tem przysyªanych danych.
Rysunek 3.8: Nawi¡zanie poª¡czenia TCP z serwerem [31].
30
3.3.2 Otrzymanie »¡dania
W momencie pojawienia si¦ danych serwer pobiera je i parsuje do formatu »¡dania (rys. 3.9).
Zale»nie od implementacji, dane buforowane s¡ do momentu otrzymania caªego, logicznego
komunikatu lub przekazywane na bie»¡co do aplikacji sieciowej. Pierwsze rozwi¡zanie ma
znaczenie w kontek±cie wolnego poª¡czenia, drugie natomiast redukuje opó¹nienie.
Rysunek 3.9: Parsowanie danych do formatu »¡dania [31].
3.3.3 Przetworzenie »¡dania
Po odebraniu »¡dania serwer przetwarza je zgodnie z wyspecykowan¡ metod¡ dost¦pu, adresem URL, wytycznymi zawartymi w nagªówku oraz opcjonalnymi danymi, mapuj¡c te informacje na odpowiedni zasób. Obsªuga »¡dania mo»e polega¢ nie tylko na udost¦pnieniu
statycznego zasobu z systemu plików, ale równie» dynamicznie generowanego za po±rednictwem programu po stronie serwera lub funkcji aplikacji sieciowej (rys. 3.10)
Rysunek 3.10: Schemat mapowania adresu URL do zasobu serwera [31].
31
3.3.4 Konstrukcja odpowiedzi
Zasób zidentykowany w poprzednim kroku przesyªany jest przez serwer w postaci komunikatu odpowiedzi, który zawiera kod statusu, nagªówki oraz opcjonalne dane. W przypadku
dostarczania danych, serwer wybiera format najbardziej odpowiadaj¡cy »¡daniu klienta, specykuje typ MIME w polu
Content-Type
oraz rozmiar transferu w polu
Content-Length.
Niekiedy odpowied¹ serwera mo»e by¢ równie» przekierowaniem klienta do innego miejsca,
podanego w polu
Location
(rys. 3.11).
Rysunek 3.11: Przekierowanie klienta do innego serwera [31].
3.3.5 Wysªanie odpowiedzi
Wysyªanie odpowiedzi do poª¡czonego klienta jest symetryczn¡ operacj¡ do pobierania »¡dania. Podobnie transfer mo»e by¢ buforowany do czasu zbudowania caªego komunikatu lub
przekazywany na bie»¡co do klienta. Wa»nym elementem jest ±ledzenie stanu poª¡cze« trwaªych, gdy» mog¡ zosta¢ zamkni¦te przez klienta w ka»dej chwili, jak równie» ustawianie odpowiedniego rozmiaru danych w polu
Content-Length,
poniewa» klient nie b¦dzie w stanie
stwierdzi¢ zako«czenia przesyªania danych.
3.4
Komponenty sieci
Oprócz klientów i serwerów istnieje wiele innych komponentów sieci, najcz¦±ciej peªni¡cych
funkcj¦ w¦zªów po±rednicz¡cych. Mo»na wyró»ni¢ ich nast¦puj¡ce rodzaje:
•
Proxy po±rednik w komunikacji pomi¦dzy w¦zªami, potencjalnie modykuj¡cy komunikaty HTTP, najcz¦±ciej na potrzeby ukrycia to»samo±ci klienta, transformacji danych,
ltrowania anonimowych »¡da« i blokowania niedozwolonej zawarto±ci (rys. 3.12).
•
Pami¦¢ podr¦czna (ang. cache ) w¦zeª po±rednicz¡cy, którego zadaniem jest buforowanie kopii cz¦sto pobieranych zasobów w celu ich udost¦pniania z pomini¦ciem serwera,
co powoduje skrócenie ±cie»ki komunikacji oraz redukcj¦ czasu odpowiedzi (rys. 3.13).
•
Brama (ang. gateway ) warstwa odseparowuj¡ca w¦zªy innej sieci, które wykorzystuj¡
odmienny protokóª aplikacyjny, wymagaj¡cy tªumaczenia komunikatów (rys. 3.14).
•
Tunel (ang. tunnel ) przeka¹nik po±rednicz¡cy pomi¦dzy dwoma w¦zªami sieci w sposób transparentny, najcz¦±ciej wykorzystywany do niemodykuj¡cej transmisji komunikatów innych protokoªów w obr¦bie poª¡cze« HTTP (rys. 3.15).
32
Rysunek 3.12: Schemat dziaªania proxy.
Rysunek 3.13: Schemat dziaªania pami¦ci podr¦cznej.
Rysunek 3.14: Schemat dziaªania bramy.
Rysunek 3.15: Schemat dziaªania tunelu.
33
3.5
Optymalizacja
Na popraw¦ efektywno±ci protokoªu HTTP wpªyw ma nie tylko wybór i sparametryzowanie przegl¡darki, lecz równie» odpowiednie skongurowanie serwera (rys. 3.16). Wska¹nikiem
wydajno±ci tej strony komunikacji jest najcz¦±ciej czas tworzenia i dostarczenia dokumentu
do klienta (ang.
time to rst byte ).
W tym kontek±cie optymalizacja dotyczy gªównie spo-
sobu generowania strony internetowej oraz strategii udost¦pniania zasobów z uwzgl¦dnieniem
pami¦ci podr¦cznej i rozproszonej infrastruktury dostarczania danych.
Rysunek 3.16: Optymalizacja klienta i serwera [42].
3.5.1 Unikanie przekierowa«
Obecnie przekierowania wykorzystywane s¡ najcz¦±ciej do nawigowania mi¦dzy ró»nymi cz¦±ciami strony internetowej, zale»nie od pewnych uwarunkowa« klienta (np. typ przegl¡darki,
rodzaj konta u»ytkownika). Serwer realizuje staªe lub tymczasowe przekierowanie specykuj¡c
kod o warto±ci odpowiednio 301 lub 302 oraz nowy adres zasobu w polu nagªówka
Location:
HTTP/1.1 301 Moved Permanently
Location: http://example.com/contact.html
Content-Type: text/html
Przekierowanie mo»e by¢ równie» zrealizowane na poziomie kodu HTML (znacznik
lub JavaScript (atrybut
location),
<meta>)
jednak preferowan¡ technik¡ jest wykorzystanie statusu
odpowiedzi HTTP, ze wzgl¦du na zapewnienie poprawnego dziaªania nawigacji przegl¡darki.
Negatywny wpªyw przekierowa« polega na wydªu»eniu czasu otrzymania i wy±wietlenia zasobu w przegl¡darce, dlatego te» nale»y ich unika¢ podczas projektowania aplikacji sieciowej.
3.5.2 Obsªuga pola Expires
Wygl¡d i interaktywno±¢ stron internetowych stale si¦ wzbogaca, co skutkuje doª¡czaniem
wi¦kszej liczby skryptów, styli, obrazów i zawarto±ci Flash. Klient odwiedzaj¡cy dan¡ stron¦
po raz pierwszy wykonuje wiele »¡da« HTTP, aby pobra¢ wszystkie zasoby. Aby unikn¡¢ powtórnego pobierania tych komponentów podczas kolejnych wizyt warto umie±ci¢ je w pami¦ci
podr¦cznej za pomoc¡ specykacji daty wa»no±ci zasobu w polu
Expires:
Expires: Thu, 18 Apr 2013 20:00:00 GMT
Serwer HTTP umo»liwia ustawienie daty wa»no±ci wzgl¦dem aktualnego »¡dania odmiennie dla ró»nych typów danych, co automatyzuje proces dodawania pola nagªówka.
34
3.5.3 Konguracja znaczników ETag
Znaczniki ETag (ang.
entity tags )
sªu»¡ do unikalnego identykowania zasobów na potrzeby
walidacji sprawdzania czy obiekt w pami¦ci podr¦cznej klienta wci¡» ma swój niezmieniony
odpowiednik na serwerze. Jest to bardziej elastyczne rozwi¡zanie ni» posªugiwanie si¦ dat¡
ostatniej modykacji zasobu specykowanej w polu
Serwer HTTP przekazuje znacznik w polu
ETag
Last-Modified.
nagªówka odpowiedzi. W momencie wali-
dacji komponentu znajduj¡cego si¦ w pami¦ci podr¦cznej klient odsyªa jego znacznik w polu
If-None-Match.
Je±li znaczniki dla obu stron komunikacji s¡ zgodne, zwrócenie zawarto±ci
zasobu przez serwer mo»e zosta¢ pomini¦te (rys. 3.17).
Rysunek 3.17: Schemat obsªugi znacznika ETag [31].
Problem zwi¡zany ze znacznikami ETag polega na tym, »e cz¦sto s¡ one konstruowane
na bazie atrybutów zapewniaj¡cych im unikalno±¢ w obr¦bie danego serwera (np. metadane
opisuj¡ce plik zasobu lub wersja ustawie« konguracyjnych). Je±li zasoby udost¦pniane s¡
za po±rednictwem klastra serwerów, znacznik uzyskany z jednego w¦zªa nie b¦dzie zgodny
dla tego samego zasobu w innym w¦¹le z grupy.
Wskutek tego zamiast otrzymania zwi¦zªej odpowiedzi
Not Modified
klient musi pobra¢
caª¡ zawarto±¢ zasobu, co powoduje zu»ycie transferu, wzrost opó¹nienia i degradacj¦ wydajno±ci pami¦ci podr¦cznej. Dlatego te» nale»y odpowiednio skongurowa¢ serwer w kontek±cie
generowania znaczników lub caªkowicie wyª¡czy¢ t¦ funkcj¦, polegaj¡c jedynie na walidacji
obiektu za pomoc¡ daty ostatniej modykacji.
3.5.4 Zastosowanie kompresji
W wersji protokoªu HTTP/1.1 klient ma mo»liwo±¢ sygnalizacji wsparcia mechanizmu kompresji za pomoc¡ pola nagªówka
Accept-Encoding:
Accept-Encoding: gzip, deflate
W odpowiedzi na takie »¡danie serwer mo»e skompresowa¢ przesyªane dane za pomoc¡
jednej z metod wspieranych przez klienta i wyspecykowa¢ j¡ w polu
Content-Encoding: gzip
35
Content-Encoding:
Mechanizm gzip b¦d¡cy rozszerzeniem deate jest aktualnie najpopularniejszym sposobem kompresji dla protokoªu HTTP, bowiem pozwala on na zmniejszenie rozmiaru zasobu
w postaci pliku tekstowego nawet o 70%, co przekªada si¦ na ogóln¡ redukcj¦ rozmiaru strony
internetowej (rys. 3.18). Algorytm ten polega na wykryciu jednakowych fragmentów tekstu
i zast¡pieniu ich krótkim identykatorem, dlatego te» z powodzeniem stosowany jest wobec
zawarto±ci HTML, XML, JSON, CSS i JavaScript, które zawieraj¡ powtarzaj¡ce si¦ sªowa
kluczowe, denicje, nazwy i biaªe znaki.
Rysunek 3.18: Redukcja rozmiaru danych za pomoc¡ kompresji [31].
Podczas konguracji serwera HTTP mo»liwe jest wskazanie typów danych podlegaj¡cych
kompresji. Zaleca si¦ stosowanie jej do wszelkiego rodzaju danych tekstowych, w przeciwie«stwie do obrazów i dokumentów PDF, które s¡ pierwotnie kompresowane, a powtórna próba
zmniejszenia ich rozmiaru najcz¦±ciej ma skutek odwrotny do oczekiwanego [20].
3.5.5 Partycjonowanie domeny
Ograniczenie ze specykacji HTTP/1.x dopuszczaj¡ce zestawianie maksymalnie 2 poª¡cze«
do pojedynczego serwera szybko staªo si¦ nieaktualne i zostaªo nieformalnie rozszerzone przez
twórców przegl¡darek do 6 strumieni. Jednak»e dla rozbudowanych aplikacji sieciowych wci¡»
mo»e by¢ to niewystarczaj¡ce, bowiem popularne portale skªadaj¡ si¦ nawet z kilkuset komponentów zewn¦trznych, któr¡ musz¡ zosta¢ sprawnie dostarczone do strony klienckiej.
Taka ilo±¢ zasobów mo»e powodowa¢ znaczne opó¹nienia zwi¡zane z kolejkowaniem »¡da« w przypadku pobierania ich z tego samego serwera. W odpowiedzi na ten problem
stosuje si¦ obej±cie polegaj¡ce na rozdystrybuowaniu zasobów w obr¦bie kilku subdomen
(np.
s1.abc.com, s2.abc.com dla domeny abc.com), poniewa» odmienne adresy URL s¡ inter-
pretowane przez przegl¡darki jako odr¦bne serwery, co powoduje zwi¦kszenie limitu poª¡cze«.
Optymalna liczba partycji, na jak¡ nale»y podzieli¢ domen¦ zale»y od ilo±ci zasobów strony,
dost¦pnej przepustowo±ci sieci oraz opó¹nienia transferu, jednak zazwyczaj nie przekracza
2 subdomen. Rozpraszanie zasobów na wiele partycji jest pracochªonne i uci¡»liwe, ponadto
niewiele serwisów mo»e wydajnie wykorzysta¢ wi¦cej ni» 12 jednoczesnych poª¡cze« TCP.
Stosowanie partycjonowania domen jest cz¦sto nadu»ywane, przyczyniaj¡c si¦ do wzrostu
liczby translacji DNS oraz krótkich poª¡cze« TCP dziaªaj¡cych w trybie
slow start, co w efekcie
prowadzi do zmniejszenia komfortu pracy u»ytkownika. Zwykle znacznie wi¦ksze korzy±ci
mo»na osi¡gn¡¢ poprzez zmniejszenie liczby »¡da« HTTP, eliminuj¡c lub ª¡cz¡c zasoby [31].
36
3.5.6 Wykorzystanie infrastruktury CDN
Niewielka odlegªo±¢ klienta od serwera ma znamienny wpªyw na czas odpowiedzi, zwªaszcza
»e 80-90% wielko±ci opó¹nienia odczuwanego przez u»ytkownika zwi¡zane jest z pobieraniem
danych. Rearan»acja architektury aplikacji sieciowej na potrzeby wydajnego dostarczania zawarto±ci jest kosztownym przedsi¦wzi¦ciem, z tego wzgl¦du lepszym rozwi¡zaniem jest replikacja udost¦pnianych zasobów i rozprowadzenie ich na wiele oddalonych od siebie maszyn.
Sªu»y do tego infrastruktura CDN (ang.
content delivery network ) stanowi¡ca zbiór serwerów
rozproszonych geogracznie i znajduj¡cych si¦ w strategicznych lokalizacjach (rys. 3.19).
Rysunek 3.19: Rozproszenie zasobów w obr¦bie infrastruktury CDN [13].
Korzy±ci pªyn¡ce z wykorzystania systemu CDN wynikaj¡ z jego rozproszonego charakteru:
•
Minimalizacja odlegªo±ci Do obsªugi »¡dania klienta delegowany jest serwer znajduj¡cy si¦ najbli»ej w kontek±cie w¦zªów po±rednich, co redukuje czas odpowiedzi nawet
o 20% oraz powoduje zmniejszenie wariancji opó¹nienia (ang.
jitter ),
która cz¦sto za-
uwa»alna jest podczas strumieniowania zasobów audio/wideo.
•
Decentralizacja serwerów Infrastruktura skªadaj¡ca si¦ z wielu punktów obsªugi »¡da« oferuje wysok¡ odporno±¢ na gwaªtowny wzrost obci¡»enia oraz ataki DoS (ang.
nial of service ),
de-
gdy» w przypadku zakªócenia pracy grupy serwerów, system wci¡»
b¦dzie dost¦pny za po±rednictwem pozostaªych maszyn.
•
Redundancja danych Zwielokrotnienie zasobów w obr¦bie wielu serwerów zapewnia
bezpiecze«stwo i ªagodn¡ degradacj¦ systemu (ang.
fail-safe )
na wypadek uszkodzenia
lub nieprawidªowego funkcjonowania fragmentu sieci Internet. Wªa±ciwo±¢ redundancji
i relokacji zasobów oznacza równie» posiadanie wielu kopii zapasowych, co jest po»¡dan¡
cech¡ w przypadku ryzyka utraty danych.
Najwi¦ksze rmy internetowe posiadaj¡ wªasn¡ sie¢ CDN, jednak dla niewielkich organizacji bardziej opªacalne jest skorzystanie z usªug dostawcy takiej infrastruktury (np. Akamai,
EdgeCast). Najcz¦±ciej wykorzystywana jest ona w celu wydajnego dostarczania zawarto±ci
multimedialnych i niezawodnego dziaªania telewizji internetowej IPTV [55].
37
Rozdziaª 4
Zasób sieci
Zasobem nazywa si¦ dowoln¡ zawarto±¢ znajduj¡c¡ si¦ w sieci, która jest udost¦pniana klientom za po±rednictwem serwera. Najprostszym typem zasobu jest statyczny obiekt znajduj¡cy
si¦ w systemie plików serwera, w ogólno±ci zapisany w ka»dym mo»liwym formacie danych
(np. plik tekstowy, obraz, dokument HTML, zawarto±¢ audio/wideo).
Jednak»e zasoby mog¡ równie» funkcjonowa¢ jako programy, które generuj¡ tre±¢ dynamicznie (rys. 4.1). Tak szeroka interpretacja zasobu umo»liwia udost¦pnianie tymczasowej lub
szybko zmieniaj¡cej si¦ informacji, trudno reprezentowalnej za pomoc¡ statycznych plików
(np. transmisja wideo na »ywo, przebieg kursów akcji, zakupy on-line).
Rysunek 4.1: Statyczne i dynamiczne zasoby sieci [31].
38
4.1
Ewolucja zasobu sieci
Rozwój Internetu na przestrzeni dekad poskutkowaª pojawieniem si¦ ró»nego rodzaju zasobów:
Dokument hipertekstowy
Geneza globalnej sieci zwi¡zana jest z udost¦pnianiem niewiel-
kich dokumentów tekstowych o prostym formatowaniu z osadzonymi odno±nikami do innych obiektów. Obsªug¦ takiego zasobu zapewniaª protokóª HTTP/0.9 na zasadzie nawi¡zania poª¡czenia, realizacji pojedynczego »¡dania i zako«czenia transakcji. Idea ta
przetrwaªa przez lata b¦d¡c podstaw¡ rozwoju projektu WWW oraz protokoªu HTTP.
Strona internetowa
Wkrótce koncepcja dokumentu hipertekstowego zostaªa rozszerzona
do poj¦cia strony internetowej skªadaj¡cej si¦ z wielu zasobów zewn¦trznych (rys. 4.2).
Du»y wpªyw na to zjawisko miaªo pojawienie si¦ technologii HTML/CSS oraz dostarczenia wsparcia dla zasobów multimedialnych. Skutkiem tych innowacji byªa równie»
konieczno±¢ wprowadzenia kolejnej wersji HTTP/1.x wzbogacaj¡cej protokóª o obsªug¦
nagªówków, poª¡cze« trwaªych, pami¦ci podr¦cznej, etc.
Aplikacja sieciowa
Wraz z pojawieniem si¦ ró»nych mechanizmów DHTML (ang.
Dynamic
HTML), zwªaszcza j¦zyka JavaScript oraz technologii AJAX, strony internetowe zacz¦ªy
przeksztaªca¢ si¦ w rozbudowane aplikacje sieciowe wykonuj¡ce kod po stronie klienta,
wykorzystuj¡ce »¡dania asynchroniczne i stanowi¡ce zªo»ony graf zasobów znaczników deniuj¡cych struktur¦, styli okre±laj¡cych wygl¡d oraz skryptów odpowiadaj¡cych
za interakcj¦ z u»ytkownikiem.
Rysunek 4.2: Zasoby zewn¦trzne strony internetowej [31].
4.2
Pomiary zasobów internetowych
Wspóªcze±nie coraz bardziej powszechne staje si¦ analizowanie historii ró»nych zmian technologicznych, przede wszystkim w celu inspekcji zdarze« z przeszªo±ci, ich wpªywu na obecn¡
sytuacj¦ oraz pojawiaj¡ce si¦ trendy. Dlatego te» zdano sobie spraw¦ z kulturowego znaczenia
globalnej sieci i potrzeby archiwizowania zmian w niej zachodz¡cych. Wiele organizacji podj¦ªo
si¦ zadania zbierania i przechowywania informacji dotycz¡cych zasobów Internetu [73].
39
4.2.1 Pomiary Google
Oprócz ekstrakcji zawarto±ci stron internetowych oraz ich indeksowania efektami dziaªania
robota
Googlebot
jest dostarczanie podstawowych pomiarów zwi¡zanych z napotkanymi zaso-
bami. Mierzonymi atrybutami s¡: ilo±¢ oraz typ zasobów zewn¦trznych, rozmiar dokumentu,
skuteczno±¢ mechanizmu kompresji (tab. 4.1). Na wiarygodno±¢ statystyk du»y wpªyw ma
liczba przeanalizowanych stron, która si¦ga kilku miliardów. Do czynników wpªywaj¡cych
na rzetelno±¢ rezultatów mo»na zaliczy¢ nast¦puj¡ce kwestie [61]:
robots.txt.
•
Niektóre strony blokuj¡ dost¦p do plików CSS i JS poprzez wytyczne pliku
•
W kwestii kompresji danych cz¦±¢ witryn prezentuje robotowi odmienne reprezentacje
zasobów ni» zwykªym klientom.
•
Robot bazuje na silniku WebKit, a zasoby mog¡ by¢ serwowane warunkowo w zale»no±ci
od rodziny przegl¡darki.
•
Zbiór analizowanych stron zwi¡zany jest z ich pozycj¡
Atrybut
Warto±¢
PageRank
[11].
Opis
Strony
4.2 × 109
Zasoby
43.9
‘rednia liczba zewn¦trznych zasobów
›¡dania GET
44.6
‘rednia liczba »¡da« typu GET
Hosty
7.01
‘rednia liczba unikalnych hostów
Zasoby na host
6.26
‘rednia liczba zasobów na host
Wielko±¢ transferu
320 KB
‘rednia liczba przesªanych bajtów
Rozmiar dokumentu
376 KB
‘redni caªkowity rozmiar strony
Zastosowanie kompresji
66%
Udziaª skompresowanych danych
Obrazy
29.4
‘rednia liczba obrazów
Rozmiar obrazów
206 KB
‘redni rozmiar obrazów
Skrypty
7.09
‘rednia liczba skryptów
Rozmiar skryptów
58.0 KB
‘redni rozmiar skryptów
Š¡czenie skryptów
3.75
‘rednia liczba nadmiarowych »¡da« skryptów
Arkusze styli
3.22
‘rednia liczba zewn¦trznych arkuszy styli
Rozmiar arkuszy styli
18.7 KB
‘redni rozmiar arkuszy styli
Š¡czenie arkuszy styli
2.02
‘rednia liczba nadmiarowych »¡da« arkuszy styli
Liczba przeanalizowanych stron
Tablica 4.1: Wyniki pomiarów stron internetowych robota Google (2010 r.).
Najwa»niejsze wnioski wynikaj¡ce z zebranych danych:
•
‘redni rozmiar strony internetowej w 2010 r. wynosi 320 KB.
•
Jedynie 66% kompresowalnych danych jest faktycznie skompresowanych.
•
W przypadku 80% stron co najmniej 10 zasobów pobieranych jest z tego samego serwera.
•
Gdyby wszystkie skrypty oraz arkusze styli znajduj¡ce si¦ na jednym serwerze zostaªy
poª¡czone, zaoszcz¦dzonoby co najmniej 5 »¡da« HTTP.
40
4.2.2 Pomiary wªasne
W celu ewaluacji ocjalnych pomiarów oraz poszerzenia zbioru informacji na temat struktury statystycznego dokumentu HTML, w ramach cz¦±ci projektowej powtórzono badania
we wªasnym zakresie. Wst¦pnie rozwa»ono nast¦puj¡ce warianty ±rodowiska eksperymentu:
•
Przegl¡darka internetowa implementacja wªasnego klienta HTTP na bazie istniej¡cego silnika przegl¡darki, wzbogaconego o mechanizm zbierania statystyk odwiedzonych
stron. Podej±cie wymaga wkªadu znacznej ilo±ci pracy w celu dostarczenia funkcjonalno±ci zach¦caj¡cej u»ytkownika do systematycznego wykorzystywania aplikacji.
•
Rozszerzenie istniej¡cej przegl¡darki dodanie moduªu zbierania statystyk do istniej¡cej przegl¡darki za pomoc¡ mechanizmu wtyczek. Ze wzgl¦dów bezpiecze«stwa rozszerzenia dziaªaj¡ w ±rodowisku o ograniczonych przywilejach (ang.
sandbox ),
co mo»e
powodowa¢ trudno±ci w skªadowaniu i przesyªaniu zebranych charakterystyk.
•
Robot internetowy przeprowadzanie pomiarów przy u»yciu przegl¡darki uzale»nia
powodzenie eksperymentu od wyboru odpowiedniej próby u»ytkowników oraz ich rzetelnej wspóªpracy. Zautomatyzowanie procesu pozyskiwania statystyk pozwala na zredukowanie wpªywu czynnika ludzkiego oraz czasu oczekiwania na rezultaty. Wobec tego zdecydowano si¦ na realizacj¦ robota internetowego symuluj¡cego u»ytkowników (rozdz. 6).
Struktura
html
head
title
meta
link
body
span
div
1.0
1.0
1.0
7.5
6.3
0.9
12.7
49.6
Zasoby
a
img
style
script
object
embed
iframe
56.9
32.1
1.4
15.1
0.1
0.2
2.7
Formatowanie
p
h1
h2
h3
b
i
strong
em
hr
17.6
1.5
4.2
5.7
6.1
2.7
5.9
1.7
0.1
Tabele i listy
table
th
tr
td
li
ul
ol
2.8
0.1
6.9
15.3
13.6
11.9
0.4
HTML 5
header
nav
section
article
aside
figure
canvas
audio
footer
0.5
0.3
0.8
0.9
0.2
0.3
0.5
0.1
0.3
Formularze
form
label
input
select
option
textarea
button
1.5
2.1
8.0
0.6
19.6
0.1
0.6
Tablica 4.2: Wªasne wyniki pomiarów stron (2012 r.).
Projekt wªasnego robota internetowego zostaª oparty na silniku Webkit, przez co aplikacja
w kontek±cie funkcjonowania jako klient HTTP niewiele ró»niªa si¦ od przegl¡darki, pozwalaj¡c odwiedzanym serwisom na wykonanie kodu JavaScript i zaªadowanie zawarto±ci Flash.
Dzi¦ki temu w pomiarach uwzgl¦dnienio asynchronicznie pobierane komponenty oraz dokªadnie okre±lono wielko±¢ transferu. Podobnie jak w przypadku pomiarów Google, mierzonymi
atrybutami s¡: liczba »¡da«, rozmiar strony oraz potencjalne oszcz¦dno±ci przy zastosowaniu
ª¡czenia plików (tab. 4.3). Dodatkowo uwzgl¦dniono czas ªadowania strony, stopie« wykorzystania ciasteczek oraz wyst¦powanie poszczególnych znaczników HTML (tab. 4.2).
41
Sumarycznie robot odwiedziª 200,000 najpopularniejszych serwisów z rankingu
Alexa.org
oraz po 4 losowe podstrony z ka»dego portalu, co ª¡cznie daje 1,000,000 wizyt. Ze wzgl¦du
na liczno±¢ odwiedzanych stron oraz niewielkie zaplecze sprz¦towe ka»dy z adresów odwiedzany
byª jednokrotnie. Takie podej±cie zwi¡zane jest z nast¦puj¡cymi komplikacjami:
•
W przypadku strony o szybkozmiennej zawarto±ci, pomiar dokonany podczas jednorazowej wizyty mo»e nie by¢ reprezentatywny dla danego serwisu.
•
Niektóre strony wymagaj¡ zalogowania w celu uzyskania dost¦pu do podstron i typowej
dla danego portalu zawarto±ci (np.
•
facebook.com ).
Pewne serwisy nie posiadaj¡ strony gªównej, poniewa» s¡ wykorzystywane do udost¦pniania innych zasobów (np.
Atrybut
googleusercontent.com ).
Warto±¢
Opis
Strony
106
Zasoby
53.4
‘rednia liczba zewn¦trznych zasobów
›¡dania GET
55.1
‘rednia liczba »¡da« typu GET
Hosty
8.00
‘rednia liczba unikalnych hostów
Zasoby na host
6.68
‘rednia liczba zasobów na host
Wielko±¢ transferu
532 KB
‘rednia liczba przesªanych bajtów
Rozmiar dokumentu
612 KB
‘redni caªkowity rozmiar strony
Obrazy
32.1
‘rednia liczba obrazów
Rozmiar obrazów
393 KB
‘redni rozmiar obrazów
Skrypty
10.7
‘rednia liczba skryptów
Rozmiar skryptów
92.7 KB
‘redni rozmiar skryptów
Š¡czenie skryptów
6.91
‘rednia liczba nadmiarowych »¡da« skryptów
Arkusze styli
3.62
‘rednia liczba zewn¦trznych arkuszy styli
Rozmiar arkuszy styli
23.8 KB
‘redni rozmiar arkuszy styli
Š¡czenie arkuszy styli
2.54
‘rednia liczba nadmiarowych »¡da« arkuszy styli
Ciasteczka
5.74
‘rednia liczba ciasteczek
Czas oczekiwania
1.79
‘redni czas ªadowania strony
Bª¦dy
13%
Udziaª odpowiedzi o charakterze bª¦du (4XX, 5XX)
Liczba przeanalizowanych stron
Tablica 4.3: Wªasne wyniki pomiarów stron (2012 r.).
Najwa»niejsze wnioski wynikaj¡ce z zebranych danych:
•
Po upªywie 2 lat ±redni rozmiar strony niemal si¦ podwoiª i przekroczyª 0,5 MB.
•
Ilo±¢ zasobów zewn¦trznych wymagaj¡cych osobnego »¡dania GET wynosi okoªo 54.
•
Na ka»d¡ stron¦ przypada prawie 10 nadmiarowych »¡da« w porównaniu do sytuacji,
gdyby skrypty i arkusze styli byªy poª¡czone.
•
Porównuj¡c liczb¦ skryptów zewn¦trznych oraz znaczników
<script> mo»na stwierdzi¢,
»e kod Javascript w 60% przypadków osadzany jest wewn¡trz dokumentu HTML.
•
Na stron¦ przypada okoªo 1 formularz, 3 tabele, 6 ciasteczek i ponad 50 odno±ników.
•
W przybli»eniu co trzecia strona wykonana jest w standardzie HTML5, wynika to z cz¦sto±ci znaczników
•
<nav> i <footer>,
które zazwyczaj wyst¦puj¡ pojedynczo.
‘redni czas ªadowania strony wyniósª niespeªna 2 s dla ª¡cza o przepustowo±ci 10 Mb/s.
42
4.2.3 Pomiary Internet Archive
Organizacja Internet Archive obejmuje serwis HTTP Archive stanowi¡cy repozytorium informacji zwi¡zanych z wydajno±ci¡, budow¡ i sposobem dziaªania popularnych portali internetowych. Gªównymi przedmiotami pomiarów s¡: rozmiar strony, wykorzystywane technologie,
czas obsªugi »¡da«, bª¦dne odpowiedzi serwera, liczba przekierowa« (tab. 4.4).
Zbiór odwiedzanych adresów obejmuje ponad 300,000 najpopularniejszych serwisów WWW
wedªug zestawienia portalu
Alexa.org.
Badania przeprowadzane s¡ przy pomocy przegl¡darki
Internet Explorer 9, sterowanej za po±rednictwem narz¦dzia
WebPageTest.org. Ka»da ze stron
internetowych odwiedzana jest 3 razy, a ostateczny wynik stanowi mediana tak otrzymanych
rezultatów. Problematyczne kwestie dla tego podej±cia to:
•
Jako±¢ dziaªania serwisu eksploracji sieci rzutuje na ilo±¢ efektywnie pobranych stron.
•
Caªo±¢ witryny mo»e nie by¢ odpowiednio reprezentowana przez jej stron¦ gªówn¡.
•
Zasoby mog¡ by¢ serwowane w zale»no±ci od typu przegl¡darki.
Atrybut
Warto±¢
Opis
Strony
300,000+
Liczba przeanalizowanych stron
›¡dania GET
90
‘rednia liczba »¡da« typu GET
Hosty
15
‘rednia liczba unikalnych hostów
Wielko±¢ transferu
1311 KB
‘rednia liczba przesªanych bajtów
Obrazy
55
‘rednia liczba obrazów
Rozmiar obrazów
812 KB
‘redni rozmiar obrazów
Skrypty
15
‘rednia liczba skryptów
Rozmiar skryptów
216 KB
‘redni rozmiar skryptów
Arkusze styli
5
‘rednia liczba zewn¦trznych arkuszy styli
Rozmiar arkuszy styli
36 KB
‘redni rozmiar arkuszy styli
Zasoby Flash
3
Liczba zasobów Flash
Rozmiar zasobów Flash
195 KB
‘redni rozmiar zasobów w formacie Flash
Biblioteki Google
26%
Udziaª stron wykorzystuj¡cych biblioteki Google
Technologia Flash
36%
Udziaª stron wykorzystuj¡cych technologi¦ Flash
Wªasne czcionki
14%
Udziaª stron wykorzystuj¡cych wªasne czcionki
Obrazy JPEG
45%
Udziaª obrazów w formacie JPEG
Obrazy GIF
27%
Udziaª obrazów w formacie GIF
Obrazy PNG
25%
Udziaª obrazów w formacie PNG
›¡dania HTTPS
5%
Udziaª »¡da« typu HTTPS
Bª¦dy
36%
Udziaª odpowiedzi o charakterze bª¦du (4XX, 5XX)
Przekierowania
65%
Udziaª odpowiedzi o charakterze przekierowania
Tablica 4.4: Wyniki pomiarów stron HTTP Archive (2014 r.).
Najwa»niejsze wnioski wynikaj¡ce z zebranych danych:
•
W ci¡gu 4 lat ±redni rozmiar strony zwi¦kszyª si¦ czterokrotnie i przekroczyª 1 MB.
•
Co czwarty serwis wykorzystuje biblioteki Google, co trzeci technologi¦ Flash.
•
Obrazy w formacie GIF wci¡» dominuj¡ nad standardem PNG.
•
›¡dania skierowane do 36% witryn zako«czyªy si¦ komunikatem bª¦du.
•
Niemal 2/3 odwiedzonych stron wykorzystuje przekierowania.
43
4.2.4 Porównanie pomiarów
W celu caªo±ciowej analizy modelu statystycznej strony internetowej, wyniki zebrane przez Google, Internet Archive oraz podczas wªasnej eksploracji sieci zaprezentowano w pojedynczym
zestawieniu (tab. 4.5). Obejmuje ono wspólne parametry pojawiaj¡ce si¦ u ka»dego z wykonawców pomiarów: liczba badanych stron, odniesienia do innych hostów, wielko±¢ transferu,
ilo±¢ i rozmiar zasobów z wyszczególnieniem obrazów, skryptów i arkuszy styli.
Atrybut
Google
Wªasne
Archive
Opis
Rok
2010
2012
2014
Rok wykonania pomiarów
Strony
4.2 × 106
106
3 × 105
Liczba przeanalizowanych stron
Zasoby
44
53
90
‘rednia liczba zewn¦trznych zasobów
Hosty
7
8
15
‘rednia liczba unikalnych hostów
Wielko±¢ transferu
320 KB
532 KB
1311 KB
‘rednia liczba przesªanych bajtów
Obrazy
29
32
55
‘rednia liczba obrazów
Rozmiar obrazów
206 KB
393 KB
812 KB
‘redni rozmiar obrazów
Skrypty
7
11
15
‘rednia liczba skryptów
Rozmiar skryptów
58 KB
93 KB
216 KB
‘redni rozmiar skryptów
Arkusze styli
3
4
5
‘rednia liczba arkuszy styli
Rozmiar arkuszy styli
19 KB
24 KB
36 KB
‘redni rozmiar arkuszy styli
Tablica 4.5: Zestawienie pomiarów Google, HTTP Archive oraz wªasnych.
Najwa»niejsze wnioski wynikaj¡ce z zebranych danych:
•
Dobór wielko±ci badanej próbki ma du»y wpªyw na rzetelno±¢ pomiarów, dlatego najcz¦±ciej za punkt odniesienia uznaje si¦ kompleksowe rezultaty dostarczone przez Google.
•
W ci¡gu 4 lat liczba zasobów podwoiªa si¦ i osi¡gn¦ªa warto±¢ 90 (rys. 4.3). ‘wiadczy to
o istotnym znaczeniu technik optymalizacyjnych oraz bada« nad now¡ wersj¡ protokoªu
HTTP (rozdz. 8), których nadrz¦dnym celem jest redukcja czasu pobierania zasobów.
Rysunek 4.3: Wzrost liczby zasobów stron internetowych.
44
•
W ci¡gu 4 lat liczba hostów, na których przechowywane s¡ zasoby statystycznej strony
internetowej równie» si¦ podwoiªa i osi¡gn¦ªa warto±¢ 15. Mo»e by¢ to spowodowane
upowszechnieniem si¦ infrastruktury CDN (rozdz. 3) lub agresywno±ci¡ systemów reklam, które zawy»aj¡ rezultaty poprzez umieszczanie tre±ci marketingowych.
•
Od 2010 r. wypadkowy rozmiar strony zwi¦kszyª si¦ 4-krotnie (rys. 4.4). W tym aspekcie
najwi¦ksz¡ rol¦ odgrywa wzrost liczby i rozmiaru zasobów zewn¦trznych, które pobierane s¡ wraz z tre±ci¡ dokumentu, a stanowi¡ 88% przesyªanych bajtów. Najpowszechniejszymi elementami s¡ obrazy, skrypty oraz arkusze styli.
Rysunek 4.4: Wzrost rozmiaru stron internetowych i ich zasobów.
•
Rozmiar i liczba obrazów podwoiªa si¦, pod tym wzgl¦dem stanowi¡ one najwi¦kszy
udziaª o warto±ci 67% w statystycznej charaterystyce zasobów stron internetowych.
•
Rozmiar skryptów równie» podwoiª si¦, ale ich liczba zwi¦kszyªa si¦ mniej gwaªtownie.
Ilo±¢ zasobów zewn¦trznych w postaci czystotekstowej mo»e by¢ bowiem efektywnie
ograniczana przez ª¡czenie tych plików, co skutkuje zmniejszeniem liczby »¡da«.
•
Natomiast rozmiar i liczba arkuszy styli wzrosªa nieznacznie w post¦pie liniowym, prawdopodobnie za spraw¡ tendencji do ujednolicania i minimalizacji wygl¡du stron w celu
zapewnienia czytelno±ci i dogodnej obsªugi, zwªaszcza na urz¡dzeniach przeno±nych.
W zwi¡zku z gwaªtowno±ci¡ i nieuchronno±ci¡ wzrostu rozmiaru i liczby zasobów umieszczanych na stronach internetowych, istotn¡ rol¦ odgrywa rozpoznanie i efektywne zastosowanie
odpowiednich technik pozwalaj¡cych na ograniczenie rozmiaru tych elementów i redukcj¦ ich
liczby w celu zmniejszenia opó¹nienia sieci bez konieczno±ci usuwania funkcjonalno±ci strony.
45
4.3
Optymalizacja
Statystycznie wi¦kszo±¢ czasu sp¦dzonego przez przegl¡dark¦ przypada na pobieranie zasobów zewn¦trznych: obrazów, skryptów, arkuszy styli, zawarto±ci Flash. Zmniejszenie liczby
tych komponentów równowa»ne jest ograniczeniu ilo±ci »¡da« HTTP, co przekªada si¦ na redukcj¦ sumarycznego opó¹nienia. Efekt ten mo»na ªatwo osi¡gn¡¢ przez eliminacj¦ zasobów
i uproszczenie wygl¡du strony, jednak istniej¡ techniki pozwalaj¡ce na popraw¦ wydajno±ci
transferu za po±rednictwem HTTP przy zachowaniu bogatej funkcjonalno±ci i estetycznego
interfejsu serwisu. Zostaªy one spopularyzowane na przestrzeni lat przez spoªeczno±¢ twórców
stron internetowych, nale»y mie¢ jednak na uwadze, »e s¡ to prowizoryczne obej±cia ogranicze«
specykacji, które zostan¡ wyeliminowane w kolejnych wersjach protokoªu [34].
4.3.1 Š¡czenie zasobów
Redukcja liczby »¡da« jest najlepsz¡ metod¡ poprawy wydajno±ci, bez wzgl¦du na wykorzystywany protokóª i aplikacj¦. Najprostszym sposobem osi¡gni¦cia tego celu w kontek±cie
protokoªu HTTP jest ª¡czenie wielu zasobów w jeden, obsªugiwany przez pojedyncze »¡danie.
W ten sposób wiele skryptów lub arkuszy styli mo»e by¢ konkatenowane, a obrazy scalane
i wybierane z osobna przez odpowiednie reguªy CSS (rys. 4.5).
Rysunek 4.5: Przykªad scalenia obrazów.
Jednak istnieje kilka istotnych problemów zwi¡zanych ze stosowaniem tej techniki:
•
Agregat mo»e zawiera¢ zasoby niewykorzystane przez stron¦, do której s¡ doª¡czone.
•
Ewaluacja skryptów i arkuszy styli po zako«czeniu pobierania caªego agregatu przyczynia si¦ do opó¹nienia dziaªania aplikacji.
•
Modykacja zawarto±ci zasobu skªadowego powoduje uniewa»nienie caªego agregatu
w pami¦ci podr¦cznej i konieczno±¢ ponownego transferu.
•
Utrata modularno±ci i granularno±ci zasobów z perspektywy pami¦ci podr¦cznej.
•
Wi¦ksze zu»ycie pami¦ci operacyjnej przez przegl¡dark¦ podczas obsªugi scalonych obrazów, niezale»nie od faktycznie wy±wietlanego obszaru.
Š¡czenie komponentów jest optymalizacj¡ na poziomie aplikacji, która eliminuje niedoskonaªo±ci protokoªu HTTP w postaci narzutu niekompresowanych nagªówków i braku niezawodnego mechanizmu potokowania komunikatów. Z drugiej strony wymaga jednak dodatkowego
przetwarzania zasobów zanim zostan¡ umieszczone na serwerze oraz komplikuje proces ich
buforowania, modykacji i renderowania.
46
4.3.2 Osadzanie zasobów
Wplatanie zasobów w zawarto±¢ dokumentu HTML (ang.
inlining )
jest popularn¡ technik¡
redukuj¡c¡ liczb¦ »¡da« HTTP. Kod JavaScript i CSS mo»e zosta¢ ªatwo wª¡czony za pomoc¡ znaczników
<script>
i
<style>,
natomiast osadzenie zasobów multimedialnych (ob-
razy, audio, pliki PDF) wymaga wyspecykowania typu
dostarczenie danych zakodowanych w
base64:
data jako schematu adresu URL oraz
<img src="data:image/gif;base64,R0lGODlhAQABAI
AAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw=="
alt="1x1 transparent GIF pixel" />
Zasoby osadzone w tre±ci dokumentu staj¡ si¦ jego nieodª¡czn¡ cz¦±ci¡ i nie mog¡ by¢
umieszczone w pami¦ci podr¦cznej osobno. Wplatanie tego samego zasobu w zawarto±¢ kilku
stron sprawia, »e jest on pobierany wielokrotnie, a ka»da jego modykacja powoduje uniewa»nienie caªego dokumentu w pami¦ci podr¦cznej. Wobec tego zaleca si¦ osadzanie unikalnych
zasobów o rozmiarze poni»ej 1-2 KB, poniewa» dostarczanie ich w postaci samodzielnych
plików poci¡gaªoby za sob¡ narzut nagªówków HTTP przekraczaj¡cy wªasny rozmiar [65].
4.3.3 Uproszczenie arkuszy styli
Wyra»enia zawarte w arkuszach styli pozwalaj¡ na dynamiczne ustawianie wªa±ciwo±ci za pomoc¡ instrukcji JavaScript, np.:
background-color: expression((new Date()).getHours() % 2 ? "#FFF" : "#333");
Jest to przydatny, ale i kosztowny mechanizm blokowany przez wi¦kszo±¢ przegl¡darek,
poniewa» wyra»enia CSS ewaluowane s¡ nadmiernie cz¦sto podczas zmiany poªo»enia kursora, przewijania strony i skalowania okna przegl¡darki. W celu dynamicznego modykowania
styli zaleca si¦ obsªugiwanie zdarze« z poziomu kodu JavaScript (uchwyty
obiektu
window).
onload
i
resize
4.3.4 Miniaturyzacja i zaciemnianie kodu
Zmniejszenie rozmiaru skryptów i arkuszy styli (ang.
minication ) polega na usuni¦ciu z nich
zb¦dnych elementów (komentarze, biaªe znaki). Alternatywn¡ i mniej powszechn¡ optymalizacj¡ jest zaciemnianie kodu (ang.
obfuscation )
polegaj¡ce na uczynieniu go nieczytelnym
dla czªowieka, co wi¡»e si¦ równie» ze zmniejszeniem rozmiaru (list. 4.1). Obydwie metody
redukuj¡ rozmiar pliku ±rednio o 20%, co skutkuje skróceniem czasu jego pobierania. Proces
zautomatyzowanego zmniejszania rozmiaru nale»y stosowa¢ zarówno do zewn¦trznych, jak
i zagnie»d»onych skryptów oraz arkuszy styli.
Listing 4.1: Zaciemnianie i miniaturyzacja kodu JavaScript.
var
a=" H e l l o
function
World ! " ;
MsgBox ( msg )
{
a l e r t ( msg+"\n"+a ) ;
}
MsgBox ( "OK" ) ;
var
_0xea0d = [ " \ x 4 8 \ x 6 5 \x6C\x6C\ x6F \ x 2 0 \ x 5 7 \ x6F \ x 7 2 \x6C\ x 6 4 \ x 2 1 " ,
" \ x0A " , " \ x4F \x4B " ] ; v a r
a=_0xea0d [ 0 ] ; f u n c t i o n
MsgBox ( _0x951cx3 )
{ a l e r t ( _0x951cx3+_0xea0d [ 1 ] + a ) ; } MsgBox ( _0xea0d [ 2 ] ) ;
47
4.3.5 Doª¡czanie zasobów w postaci zewn¦trznych plików
Jak wcze±niej stwierdzono, zmniejszenie liczby »¡da« HTTP w du»ej mierze przyczynia si¦
do redukcji opó¹nienia. Mo»e to skªania¢ do osadzania zasobów w kodzie HTML, jednak nie
zawsze jest to optymalne rozwi¡zanie, ze wzgl¦du na korzy±ci pªyn¡ce z obsªugi osobnych
plików za po±rednictwem poª¡cze« równolegªych oraz pami¦ci podr¦cznej. I tak wplatanie zawarto±ci zasobów w struktur¦ dokumentu redukuje liczb¦ wykonywanych »¡da«, jednak kosztem wzrostu rozmiaru strony alternatywnym rozwi¡zaniem jest doª¡czanie tych obiektów
jako zewn¦trznych plików, które mog¡ by¢ umieszczone w pami¦ci podr¦cznej przegl¡darki,
co dla kolejnych transferów zmniejsza rozmiar strony bez zwi¦kszania liczby »¡da«.
Kluczowym czynnikiem determinuj¡cym preferowany sposób udost¦pniania zasobów pobocznych jest stopie« ich powtarzalno±ci na przestrzeni dokumentów HTML wchodz¡cych
w skªad strony. Je±li u»ytkownicy serwisu dla ka»dej sesji generuj¡ wiele wy±wietle« podstron, a ka»da z nich wspóªdzieli wspólny zbiór zasobów, wówczas warto udost¦pnia¢ je jako
pliki zewn¦trze. Z kolei w przypadku strony gªównej, która najcz¦±ciej cechuje si¦ pojedynczym wy±wietleniem przez u»ytkowników, zaleca si¦ osadzenie zawarto±ci zasobów w obr¦bie
dokumentu HTML w celu zmniejszenia czasu odpowiedzi.
4.3.6 Lokowanie skryptów i arkuszy styli
<head> pozwala przegl¡darce na stopniowe wy±wietlanie strony w miar¦ pobierania kodu HTML (ang. progressive rendering ). Suk-
Przeniesienie arkuszy styli na szczyt dokumentu do sekcji
cesywnie pojawiaj¡ce si¦ elementy strony sprawiaj¡ wra»enie mniejszego opó¹nienia i dostarczaj¡ informacj¦ na temat przebiegu ªadowania dokumentu, bez konieczno±ci wy±wietlania
pasków post¦pu. Arkusze umieszczone poni»ej szczytu dokumentu blokuj¡ progresywne renderowanie w wielu przegl¡darkach. W ten sposób unikaj¡ one konieczno±ci ponownego odrysowywania strony, gdy jej styl ulegnie zmianie.
Z kolei problem zwi¡zany ze skryptami polega na wstrzymywaniu równolegªych transferów
przez przegl¡dark¦ do momentu pobrania i wykonania danego kodu JavaScript. Powoduje to
równie» nieefektywno±¢ techniki partycjonowania domen dla serwerów udost¦pniaj¡cych zasoby. Aby obsªuga kodu JavaScript nie blokowaªa innych komponentów, zaleca si¦ umieszczanie skryptów na dole dokumentu HTML lub dodanie atrybutu
defer
do znacznika
<script>
w celu opó¹nienia ich ewaluacji przez przegl¡dark¦. Nie jest to jednak mo»liwe w sytuacji,
gdy kod zawiera instrukcj¦
document.write
modykuj¡c¡ struktur¦ drzewa DOM w danym
miejscu lub gdy takie ustawienie powoduje problemy zwi¡zane z zasi¦giem zmiennych skryptu.
4.3.7 Opró»nianie bufora
Dynamiczne wygenerowanie dokumentu HTML przez aplikacj¦ sieciow¡ mo»e by¢ operacj¡
dªugotrwaª¡, np. ze wzgl¦du na dost¦p do bazy danych lub rozbudowan¡ logik¦ przetwarzania.
W tym czasie klient czeka bezczynnie na otrzymanie odpowiedzi. Remedium na ten problem
jest krokowe opró»nianie bufora danych serwera, czyli dostarczanie kodu HTML fragmentami. Wówczas przegl¡darka ma mo»liwo±¢ pªynnego parsowania otrzymywanej zawarto±ci
i pobierania zasobów zewn¦trznych.
Przykªadowo, w j¦zyku PHP do opró»niania bufora sªu»y funkcja
niejszym momentem dla tego wywoªania jest zako«czenie sekcji
flush().
Najdogod-
<head> dokumentu, poniewa»
pozwala to klientowi na rozpocz¦cie pobierania arkuszy styli i skryptów w niej zamieszczonych.
48
4.3.8 Redukcja liczby elementów DOM
Nadmiernie skomplikowane i rozbudowane strony internetowe zazwyczaj cechuj¡ si¦ sporym
rozmiarem kodu HTML oraz powolnym dost¦pem do elementów drzewa DOM z poziomu
skryptów JavaScript. Du»a liczba znaczników HTML mo»e by¢ symptomem nieprawidªowego
zaprojektowania struktury strony, np. poprzez nadu»ywanie tabel i bloków
<div>
do spe-
cykacji ukªadu. Takie obej±cia powinny zosta¢ wyeliminowane i zast¡pione semantycznie
poprawnymi elementami, których rozkªad deniowany jest za pomoc¡ arkuszy styli. Obecnie przyjmuje si¦, »e liczba znaczników nie powinna przekracza¢ granicy 500-700 elementów
dla rozbudowanych serwisów internetowych.
4.3.9 Optymalizacja obrazów
Czas odpowiedzi serwera jest skorelowany z rozmiarem strony internetowej, a do jego wzrostu
najbardziej przyczyniaj¡ si¦ obrazy, poniewa» stanowi¡ one ponad 50% wszystkich zasobów
zewn¦trznych. Szcz¦±liwie, pliki graczne s¡ obiektami podlegaj¡cymi stosunkowo ªatwej i wydajnej optymalizacji, bez wi¦kszej utraty jako±ci i pogorszenia komfortu pracy u»ytkownika.
Rysunek 4.6: Porównanie ró»nych stopni kompresji JPEG.
Usprawnienia te polegaj¡ na wst¦pnym okre±leniu wymaganej rozdzielczo±ci, ostro±ci i przestrzeni barw danego obrazu, których dostosowanie skutkuje ogóln¡ utrat¡ jako±ci (rys. 4.6).
Nast¦pnie obraz podlega technikom nienaruszaj¡cym jako±ci, takim jak kompresja bezstratna
lub eliminacja metadanych. W tych aspektach rekomendowane metody optymalizacji to [66]:
•
dostosowanie rozmiaru palety kolorów do liczby barw wyst¦puj¡cych w obrazie,
•
ª¡czenie zbli»onych kolorów i ograniczenie ich liczby do 256 dla formatu PNG,
•
optymalizacja animowanych plików GIF lub konwersja statycznych do formatu PNG,
•
wspomaganie kompresji poprzez poziome i g¦ste rozªo»enie scalonych obrazów,
•
usuni¦cie metadanych z plików JPEG oraz PNG,
•
unikanie skalowania obrazów w kodzie HTML za pomoc¡ atrybutów znacznika
49
<img>.
Rozdziaª 5
Roboty internetowe
Robot internetowy (ang.
crawler, spider, bot ) jest aplikacj¡ automatyzuj¡c¡ proces pobierania
i analizowania zasobów sieci. Najcz¦±ciej wykorzystywany jest jako element silnika wyszukiwarki sªu»¡cy do budowania odpowiedniej kolekcji dokumentów, które nast¦pnie s¡ indeksowane na potrzeby realizacji zapyta« u»ytkowników. Innymi jego zastosowaniami s¡: archiwizacja stron, wykrywanie narusze« prawa i niebezpiecze«stw w sieci oraz statystyczne pomiary
i monitorowanie ewolucji Internetu [56].
Rysunek 5.1: Graf zasobów sieci Internet.
Konieczno±¢ posªugiwania si¦ robotami internetowymi wynika z topologii globalnej sieci,
która nie stanowi typowo centralnego repozytorium informacji, lecz ma charakter dynamicznie zmieniaj¡cego si¦, cyklicznego grafu zasobów tworzonych przez ró»nych dostawców tre±ci,
najcz¦±ciej konkuruj¡cych ze sob¡ (rys. 5.1). Dlatego te» eksploracja Internetu gªównie sprowadza si¦ do odwiedzania kolejnych stron (wierzchoªków grafu), ekstrakcji zawarto±ci zasobu
oraz pod¡»aniu za znalezionymi odno±nikami (kraw¦dzie grafu) [3].
50
5.1
Algorytmy eksploracji sieci
Obecnie istnieje ponad 1600 sygnatur robotów internetowych, które ró»ni¡ si¦ architektur¡,
wydajno±ci¡ i mo»liwo±ciami wykorzystania [12]. Ich wspóln¡ cech¡ jest zastosowanie w procesie eksploracji sieci potencjalnie ka»dy z nich dziaªa wedªug wªasnego schematu, jednak
w ogólno±ci bazuj¡ one na kolejnych krokach algorytmu podstawowego (rys. 5.2):
Rysunek 5.2: Schemat dziaªania robota internetowego [47].
1. Wybór pocz¡tkowego zbioru adresów (ang.
2. Inicjalizacja kolejki (ang.
seed URLs ).
queue, frontier ).
3. Dopóki kolejka nie jest pusta:
(a) Pobranie adresu z kolejki.
(b) Pobranie zawarto±ci zasobu identykowanego przez adres.
(c) Ekstrakcja odno±ników, dodanie ich do kolejki.
(d) Zapisanie zawarto±ci zasobu do repozytorium.
4. Zako«czenie procesu eksploracji.
51
5.1.1 Eksploracja podstawowa
Jak wspomniano, przyjmuje si¦, »e Internet mo»e by¢ modelowany za pomoc¡ grafu cyklicznego, którego wierzchoªki odpowiadaj¡ poszczególnym stronom. Dlatego te» podstawowy algorytm eksploracji sprowadza si¦ do przej±cia po wszystkich osi¡galnych wierzchoªkach grafu
pocz¡wszy od zadanego, kolejno je koloruj¡c w celu oznaczenia odwiedzonych w¦zªów [17].
Listing 5.1: Algorytm eksploracji podstawowej
def
simple_crawler ( root_urls ,
do cuments ,
edges ) :
p e n d i n g _ u r l s = deque ( r o o t _ u r l s )
while
pending_urls :
u r l = pending_urls . p o p l e f t ( )
document = f e t c h _ r e s o u r c e ( u r l )
documents [ u r l ]
= document
a n c h o r s = p a r s e _ u r l s ( document )
for
anchor
in
anchors :
edges . s e t d e f a u l t ( url ,
if
anchor
not in
l i s t ( ) ) . append ( a n c h o r )
pending_urls
and
anchor
not in
documents :
p e n d i n g _ u r l s . append ( a n c h o r )
simple_crawler w j¦zyku
adresów root_urls oraz dwa kon-
Przykªadow¡ implementacj¦ przedstawiono za pomoc¡ funkcji
Python (list. 5.1). Algorytm otrzymuje na wej±ciu zbiór
tenery asocjacyjne sªownik
documents
przechowuj¡cy odwiedzone adresy i odpowiadaj¡ce
edges zawieraj¡cy
odwiedzone adresy i znalezione w nich odno±niki w postaci par (url, anchors).
Kolejka adresów przeznaczonych do odwiedzenia pending_urls pocz¡tkowo zostaje wypeªniona bazowym zbiorem root_urls, nast¦pnie jest przetwarzana iteracyjnie a» do wy-
im zawarto±ci dokumentów w postaci par
(url, document)
oraz sªownik
czerpania jej zawarto±ci. Zale»nie od sposobu zarz¡dzania kolejk¡ (rys. 5.3) w porz¡dku
rst-in rst-out ) lub LIFO (ang. last-in rst-out ) eksploracja grafu
odpowiednio wszerz (ang.breadth-rst search ) lub wgª¡b (ang. depth-frist search ).
FIFO (ang.
przebiega
Rysunek 5.3: Porz¡dek FIFO oraz LIFO.
pending_urls wyci¡gany jest adres url, a identykowany przez niego zasób document zostaje pobrany przez funkcj¦ pomocnicz¡ fetch_resource
oraz wstawiony do sªownika documents. W dalszym kroku inna funkcja pomocnicza parse_urls
na podstawie tre±ci dokumentu zwraca zawarte w nim odno±niki anchors. Nast¦pnie wstawiane s¡ one do kolejki pending_urls, pod warunkiem, »e si¦ tam nie znajduj¡ lub nie zostaªy
Dla ka»dego przebiegu p¦tli z kolejki
odwiedzone, co koresponduje z kolorowaniem wierzchoªków grafu w celu unikni¦cia zap¦tlenia.
Dodatkowo za pomoc¡ sªownika
edges
ka»dy odno±nik kojarzony jest z adresem
url
do-
kumentu, w którym zostaª odnaleziony, co odpowiada kraw¦dzi grafu. Informacja ta mo»e
zosta¢ wykorzystana poprzez funkcj¦ oceny, która uwzgl¦dniana jest w bardziej zaawansowanych wariantach algorytmu.
52
W implementacji tego algorytmu, nale»y równie» wzi¡¢ pod uwag¦ nast¦puj¡ce aspekty
praktyczne [52]:
•
Serializacja Kolejka adresów do przetworzenia oraz zbiór odwiedzonych adresów odzwierciedlaj¡ stan eksploracji, która mo»e zosta¢ przerwana i wznowiona pod warunkiem
trwaªo±ci wymienionych kontenerów danych.
•
Wydajno±¢ Zastosowanie wielow¡tkowego pobierania zasobów pozwala na wykorzystanie dost¦pnej przepustowo±ci sieci oraz czasu realizacji operacji wej±cia/wyj±cia.
•
Dynamika W odró»nieniu do statycznego modelu grafowego, sie¢ Internet nieustannie podlega modykacjom w kontek±cie zawarto±ci jak i topologii. Rozwi¡zaniem tego
problemu mo»e by¢ odwiedzanie stron podatnych na zmiany z wi¦ksz¡ cz¦stotliwo±ci¡.
5.1.2 Eksploracja selektywna
Znacz¡ca liczba analizowanych zasobów negatywnie wpªywa na skalowalno±¢ eksploracji sieci
oraz koszt utrzymania systemu. W optymalnym przypadku robot powinien w ±ci±le ogranicznym czasie odwiedza¢ podzbiór stron internetowych, istotnych w dziedzinie problemu.
W przypadku podstawowego algorytmu eksploracji sieci, kolejka adresów do odwiedzenia
mo»e by¢ zarz¡dzana wedªug pewnej funkcji oceny, co przekªada si¦ na strategi¦ najpierw
najlepszy (ang.
•
best-rst search )
Zagª¦bienie
[62]. W praktyce funkcja oceny mo»e wykorzystywa¢:
Ograniczenie poziomów zagª¦biania si¦ w hierarchii podstron w celu
maksymalizowania eksploracji wszerz, co zwi¦ksza szanse na dotarcie do interesuj¡cej
informacji, w odró»nieniu od eksploracji wgª¡b okre±lanej mianem
•
lost in the space
[72].
Popularno±¢ Ograniczenie liczby odwiedzanych stron poprzez ranking popularno±ci
strony internetowej, któr¡ mo»na oszacowa¢ poprzez miejsce w wynikach wyszukiwarki,
ilo±¢ odno±ników z innych stron lub wªasn¡ implementacj¦ algorytmu
PageRank
[11].
5.1.3 Eksploracja ukierunkowana
W wielu zastosowaniach realizacja algorytmu caªo±ciowej eksploracji sieci mo»e by¢ nadmiarowa, jako »e obiektem zainteresowania s¡ konkretne dziedziny tematyczne. Wówczas przeznaczeniem robota internetowego jest selektywne odwiedzanie stron nawi¡zuj¡cych do okre±lonych
tematów, a nie wyczerpuj¡ce analizowanie wszystkich zasobów.
Przewidywanie trafno±ci
Podobnie jak w przypadku eksploracji selektywnej, istotne znaczenie dla robota ukierunkowanego tematycznie ma denicja funkcji oceny. W praktyce najcz¦±ciej opiera si¦ ona na technikach kategoryzacji tekstu, np. naiwnym klasykatorze Bayesa trenowanym na odpowiednim
zbiorze dokumentów [15], chocia» istniej¡ inne sposoby okre±lania jako±ci zasobu:
•
Ocena zawarto±ci Oceniany jest dokument, którego trafno±¢ rzutowana jest na wszystkie zawarte w nim odno±niki, opieraj¡c si¦ na zasadzie lokalno±ci tematu [19].
•
Ocena odno±nika
Zamiast szacowania trafno±ci caªego dokumentu oceniany jest
tekst odno±nika, który jest traktowany jako no±nik potencjalnie istotnych informacji
zwi¡zanych z tematem.
53
Grafy kontekstu
Koncepcja grafu kontekstu sªu»y do modelowania topologii sieci w celu okre±lenia odlegªo±ci istotnych zasobów od zadanego. W¦zªami grafu s¡ zasoby sieci, kraw¦dziami natomiast
odno±niki je ª¡cz¡ce. Graf konstruowany jest w taki sposób, »e pocz¡tkowy zasób znajduje
si¦ w warstwie centralnej, a ka»da kolejna warstwa zawiera wszystkie w¦zªy odnosz¡ce si¦
do w¦zªów w warstwie poprzedniej (rys. 5.4).
Rysunek 5.4: Schemat grafu kontekstu [21].
Tak zbudowane grafy wyznaczaj¡ zbiory zasobów w konkretnej odlegªo±ci od zadanego.
Na ich podstawie system uczenia przewiduje warstw¦ odpowiedni¡ dla nowego zasobu, co
przekªada si¦ na liczb¦ odno±ników, które prowadz¡ od niego do istotnych dokumentów.
Uczenie przez wzmacnianie
Algorytm uczenia przez wzmacnianie opisuje zasady wyznaczania optymalnej polityki podejmowania akcji przez agenta na podstawie interakcji z nieznanym ±rodowiskiem, bez udziaªu
nadzorcy. Jedyn¡ informacj¡, na której agent si¦ opiera jest sygnaª wzmocnienia, a jego warto±¢ zale»y od poprawno±ci podj¦tej decyzji (rys. 5.5). W kontek±cie eksploracji sieci, agent
jest nagradzany w przypadku pobierania trafnych dokumentów, a karany po napotkaniu nieistotnych. W ten sposób wzmocnienie mobilizuje agenta do pobierania wªa±ciwych zasobów.
Rysunek 5.5: Schemat uczenia przez wzmacnianie [5].
54
5.1.4 Eksploracja rozproszona
Zbudowanie skalowalnego systemu eksploracji cz¦sto wymaga wieloprocesowego zrównoleglenia przetwarzania i geogracznego rozproszenia robota (rys. 5.6). Pozwala ono na peªne wykorzystanie dost¦pnej przepustowo±ci i mocy obliczeniowej oraz redukcj¦ opó¹nienia poprzez
delegowanie przetwarzania do jednostek znajduj¡cych si¦ w niewielkiej odlegªo±ci od serwerów.
Rysunek 5.6: Schemat dziaªania rozproszonego robota internetowego [47].
Taka infrastruktura stosowana jest w wysokowydajnych systemach eksploracji sieci:
•
Interaktywny system rekomendacji
WebWatcher
asystuje przy przegl¡daniu stron inter-
netowych. Wykorzystuj¡c techniki uczenia maszynowego próbuje przewidzie¢ najwªa±ciwszy odno±nik do odwiedzenia dla zdeniowanego przez u»ytkownika celu [1].
•
Zdolny do adaptacji system
Arachnid
wyszukuje informacje powi¡zane z dostarczonymi
sªowami kluczowymi. Do tego celu wykorzystuje populacj¦ agentów i sieci neuronowych
wybieraj¡cych dokumenty, których trafno±¢ oceniana jest przez u»ytkownika [50].
•
Popularny silnik wyszukiwania
CiteSeer
eksploruje zasoby sieci rozpoznaj¡c publikacje
i artykuªy z dziedziny informatyki. Odnalezione dokumenty s¡ analizowane oraz klasykowane w celu budowy globalnego modelu cytowa« i odniesie« [46].
55
5.2
Problemy eksploracji sieci
Rozmiar danych umieszczonych w Internecie co roku zwi¦ksza si¦ o 30% (rys. 5.7). Do tej
pory pobrano i zaindeksowano 16% wszystkich zasobów [45], a koszt eksploracji caªego Internetu szacuje si¦ na
106
dolarów [18], bior¡c jedynie pod uwag¦ wykorzystanie infrastruktury
sieciowej. Rozmiar globalnej sieci i dynamiczny rozwój jej topologii sprawia, »e zaprojektowanie i implementacja wydajnego, skalowalnego, odpornego na bª¦dy robota internetowego jest
znacznym wyzwaniem i wymaga zmierzenia si¦ z problemami, które zostaªy dalej opisane.
Rysunek 5.7: Wzrost sumarycznego rozmiaru zasobów Internetu [48].
5.2.1 Bazowy zbiór adresów
Robot internetowy rozpoczyna eksploracj¦ sieci od bazowego zbioru adresów (ang.
root set ).
Jako »e nie istnieje pojedynczy dokument po±rednio odnosz¡cy si¦ do wszystkich pozostaªych
(rys. 5.8), zbiór bazowy wypeªniany jest relatywnie niewielk¡ liczb¡ adresów z interesuj¡cej
dziedziny. W praktyce s¡ to adresy popularnych serwisów, nowo utworzonych witryn oraz
niszowych stron, do których rzadko odnosz¡ si¦ inne.
Rysunek 5.8: Problem selekcji bazowego zbioru adresów [31].
56
5.2.2 Cykle eksploracji
Istotnym zagadnieniem jest zdolno±¢ robota do wykrywania cykli, które powoduj¡ odwiedzanie
tych samych stron w p¦tli. Takie zachowanie mo»e spowolni¢ lub zatrzyma¢ proces eksploracji
sieci oraz spowodowa¢ inne skutki uboczne:
•
nadmierne zu»ycie zasobów sprz¦towych i sieciowych (moc obliczeniowa, pami¦¢, operacje wej±cia/wyj±cia, transfer danych),
•
powa»ne obci¡»enie serwera, który mo»e zaniecha¢ udost¦pniania usªugi robotowi lub
innym u»ytkownikom sieci,
•
duplikacja i redundancja danych w przypadku przechowywania pobranych zasobów
dla pó¹niejszego przetwarzania.
Naturalne cykle odno±ników
Najpowszechniejszym przypadkiem cyklu jest zamkni¦ty ªa«cuch odno±ników (rys. 5.9). Wyst¦powanie takich p¦tli jest naturaln¡ konsekwencj¡ reprezentacji Internetu w postaci grafu
cyklicznego, którego wierzchoªki odpowiadaj¡ poszczególnym serwerom podª¡czonym do sieci.
Rysunek 5.9: Cykl w postaci ªa«cucha odno±ników [31].
Niekiedy trudno jest okre±li¢, czy strona zostaªa wcze±niej odwiedzona, gªównie za spraw¡
aliasów adresów URL, które identykuj¡ ten sam zasób w ró»ny sposób (tab. 5.1).
Adres
abc.com/about.html
abc.com/user
abc.com/about.html#bio
abc.com/readme.html
abc.com/
abc.com/index.html
Alias
abc.com:80/about.html
abc.com/%7Fuser
abc.com/about.html#memo
abc.com/README.HTML
abc.com/index.html
209.231.87.45/index.html
Komentarz
Domy±lny port 80
%7F
odpowiada
Oznaczenie fragmentów dokumentu
Serwer ignoruje wielko±¢ liter
Domy±lna strona
Tablica 5.1: Przykªadowe adresy URL oraz ich aliasy.
57
index.html
Adresowanie poprzez numer IP
Generowane cykle odno±ników
W szczególnym przypadku cykle mog¡ by¢ konstruowane dynamicznie przez zªo±liw¡ aplikacj¦ sieciow¡, która generuje dokumenty hipertekstowe. Odwiedzenie osadzonych w dokumencie
odno±ników prowadzi do tego samego serwera, który ponownie tworzy sztuczny zasób, i tak dalej (rys. 5.10). Wykrycie takiego zap¦tlenia stanowi trudno±¢, jako »e generowany kod HTML
oraz zawarte w nim adresy URL mog¡ za ka»dym razem wygl¡da¢ inaczej.
Rysunek 5.10: Cykl w postaci ªa«cucha odno±ników generowanego dynamicznie [31].
Cykle systemu plików
Niefortunne utworzenie dowi¡zania symbolicznego (ang.
symbolic link )
w systemie plików
serwera mo»e spowodowa¢ cykl sprawiaj¡cy wra»enie niesko«czenie gª¦bokiej hierarchii katalogów, która zycznie nie istnieje (rys. 5.11). Odmienne adresowanie sugeruje ró»norodno±¢
zasobów, jednak w rzeczywisto±ci s¡ one to»same, co powoduje zap¦tlenie do czasu rozrostu
adresu do dªugo±ci przekraczaj¡cej mo»liwo±ci przetwarzania robota lub serwera.
Rysunek 5.11: Cykl w postaci dowi¡zania symbolicznego [31].
58
Unikanie cykli
Jak mo»na przypuszcza¢, nie istnieje uniwersalny sposób unikania cykli, które stanowi¡ powa»ne zagro»enie dla poprawnego dziaªania robota internetowego. Jednak w praktyce najcz¦±ciej wykorzystuje si¦ zestaw poni»szych heurystyk, skutecznych dla wi¦kszo±ci przypadków:
•
Normalizacja adresów Transformacja aliasów do adresów w standardowej postaci.
•
Rejestrowanie adresów Trwaªe przechowywanie odwiedzonych adresów w celu unikni¦cia ich ponownego odwiedzenia.
•
Skróty zasobów
Zastosowanie funkcji skrótu do binarnych reprezentacji zasobów
pozwala na wykrycie duplikatów niezale»nie od adresowania.
•
Kwarantanna Ograniczenie odwiedzania odno±ników z okre±lonej strony w przedziale
czasu opó¹nia powrót do hipotetycznego cyklu.
•
Czarna lista Utrzymywanie i aktualizacja listy adresów stanowi¡cych cz¦±¢ wykrytego wcze±niej cyklu jednoznacznie odrzuca zasoby-puªapki.
•
Przechodzenie wszerz Eksploracja grafu sieci metod¡ wszerz pozwala na odwiedzenie wielu innych stron przed powrotem do hipotetycznego cyklu.
•
Ograniczenie dªugo±ci adresu
Odltrowanie adresów o znacznej dªugo±ci w celu
unikni¦cia cykli systemu plików, jednak kosztem pomini¦cia prawidªowych stron.
•
Wykrywanie wzorców Rozpoznawanie powtarzaj¡cych si¦ sekwencji zawartych w adresie zasobu, co jest charakterystyczne dla cykli systemu plików (np.
/res/img/res/).
5.2.3 Przestrzeganie etykiety
Robot internetowy jako klient HTTP powinien przynajmniej przestrzega¢ zasad okre±lonych
w specykacji protokoªu. Jednak bª¦dy implementacyjne lub zªo±liwe zamiary twórcy cz¦sto
powoduj¡ powa»ne problemy innych u»ytkowników sieci Internet:
•
Generowanie nadmiernego ruchu
Roboty pobieraj¡ zasoby sieciowe ze znacznie
wi¦ksz¡ cz¦stotliwo±ci¡ ni» ludzie, co mo»e by¢ przyczyn¡ generowania nadmiernego
ruchu i obci¡»enia serwera, degraduj¡c komfort pracy innych u»ytkowników.
•
Nieprawidªowe adresowanie zasobów Z powodu cykli lub bª¦dów implementacyjnych, robot mo»e odnosi¢ si¦ do dªugich, nieprawidªowych lub przestarzaªych adresów
URL, co skutkuje zanieczyszczeniem plików logowania zdarze« serwera, obni»eniem jego
wydajno±ci i w szczególnym przypadku zatrzymaniem dziaªania.
•
Dost¦p do prywatnych danych Niektóre roboty mog¡ natra¢ na dokumenty zawieraj¡ce prywatne dane i upubliczni¢ je poprzez silniki wyszukiwania lub inne aplikacje,
co nara»a u»ytkowników sieci na straty moralne i nansowe.
•
›¡danie zasobów dynamicznych
W znacznej liczbie przypadków roboty nie s¡
w stanie zidentykowa¢ sposobu w jaki serwowany jest zasób sieci, a cz¦sto mo»e wi¡za¢
si¦ to z dynamicznym i kosztownym generowaniem zawarto±ci, co dla du»ej liczby »¡da«
negatywnie wpªywa na wydajno±¢ serwera.
59
Warto zatem pozna¢ kilka dobrych praktyk, które stanowi¡ wytyczne prawidªowego projektowania robotów sieciowych oraz ich wspóªpracy z serwerami [39]:
•
Identykacja robota Wykorzystanie nagªówka User-Agent w celu poinformowania
serwera o nazwie i przeznaczeniu robota.
•
Identykacja maszyny
Wykorzystanie maszyny z aktualnym wpisem DNS w celu
rozpoznania odpowiedzialnej organizacji.
•
Umo»liwienie kontaktu
Wykorzystanie nagªówka
From
w celu ujawnienia adresu
strony internetowej lub poczty elektronicznej twórcy robota.
•
Monitorowanie dziaªania ‘ledzenie wpisów diagnostycznych w celu wykrycia puªapek, bª¦dów oraz nieprawidªowego dziaªania robota.
•
Filtrowanie zasobów Wykorzystanie nagªówka Accept oraz normalizowanie adresów
w celu zignorowania nieistotnych zasobów (obrazy, archiwa, programy).
•
Wykluczanie zasobów
Respektowanie i stosowanie si¦ do reguª wykluczaj¡cych
zasoby z eksploracji, przechowywanych w pliku
•
robots.txt
(rys. 5.12).
Redukcja ruchu Unikanie generowania nadmiernego ruchu sieciowego poprzez ograniczenie cz¦stotliwo±ci i liczby dost¦pów do serwera oraz obsªug¦ »¡da« warunkowych.
•
Obsªuga odpowiedzi Wªa±ciwa interpretacja kodów i statusów odpowiedzi serwera
w celu wykrycia przekierowa« i bª¦dów.
•
Zarz¡dzanie zasobami Monitorowanie zu»ycia pami¦ci operacyjnej, przepustowo±ci
sieci na potrzeby optymalnego skongurowania robota.
•
Odporno±¢ na awarie
Wykorzystanie mechanizmu migawek (ang.
punktów kontrolnych (ang.
snapshot )
lub
checkpoint ) umo»liwia kontynuacj¦ dziaªania w razie awarii.
Rysunek 5.12: Schemat stosowania si¦ do wyklucze« zasobów [40].
60
Rozdziaª 6
Dokumentacja projektowa
Przeznaczeniem projektu jest przygotowanie prostego zr¦bu programistycznego i oskryptowania (ang.
framework )
pozwalaj¡cego na implementacj¦ kongurowalnego robota interne-
towego. Wi¡»e si¦ to z realizacj¡ podstawowych moduªów robota abstrahuj¡c od logiki aplikacyjnej przetwarzania pobieranych dokumentów, jako »e zale»na jest ona od konkretnego
zastosowania programu [29]. Takie podej±cie umo»liwia ponowne wykorzystanie kodu w przyszªo±ci do implementacji robotów, które w zautomatyzowany sposób mog¡ przetwarza¢ zasoby
sieci w kontek±cie ró»norodnych zastosowa« (rys. 6.1).
Rysunek 6.1: Mo»liwo±ci wykorzystania robotów internetowych [14].
Zadaniem implementowanego robota jest kontrolowana eksploracja globalnej sieci w celu
uzyskania statystycznego modelu strony internetowej. Aplikacja ma w zamierzeniu umo»liwia¢ zdeniowanie pocz¡tkowego zbioru adresów z uwzgl¦dnieniem wyklucze« umieszczanych
na czarnej li±cie, okre±lenie liczby odno±ników wybieranych z odwiedzanej strony oraz ograniczenia poziomu zagª¦bienia w hierarchii podstron. Pobierane przez robota dokumenty i ich
zasoby s¡ analizowane i statystycznie u±redniane, w rezultacie daj¡c wgl¡d na charakterystyk¦
typowej strony internetowej.
61
6.1
Sªownik poj¦¢
Bazowy zbiór
Czarna lista
Pocz¡tkowy zbiór adresów URL rozpoczynaj¡cych proces eksploracji.
Zbiór adresów URL niepodlegaj¡cych odwiedzaniu przez robota.
Eksploracja sieci
Algorytm odwiedzania kolejnych adresów URL z uwzgl¦dnieniem pobra-
nia dokumentu, ekstrakcji odno±ników, przetwarzania i utrwalenia zebranych danych.
Kolejka
Baza danych zawieraj¡ca kolejno odwiedzane adresy URL.
Model strony
U±rednione charakterystyki statystycznej strony internetowej (np. w kontek-
±cie liczby i rozmiaru zasobów, struktury HTML, przepªywu komunikatów HTTP).
Nadzorca
Moduª monitoruj¡cy dziaªanie wielu instancji robota internetowego.
U»ytkownik
Osoba korzystaj¡ca z programu.
Robot internetowy
6.2
Program pobieraj¡cy zasoby sieci za po±rednictwem protokoªu HTTP.
Wymagania funkcjonalne i niefunkcjonalne
Wymagania funkcjonalne:
1.
Inicjalizacja eksploracji
zip)
2.
Dostarczenie adresów URL (pliki tekstowe
txt, csv lub
db).
oraz wprowadzenie ich do bazowego zbioru lub czarnej listy (pliki binarne
Porz¡dek eksploracji
Wybór porz¡dku eksploracji sieci (depth-rst,
breadth-rst )
przez wykorzystanie odpowiedniej dyscypliny kolejkowania odno±ników (LIFO, FIFO).
3.
Ograniczenie eksploracji
Okre±lenie liczby ekstraktowanych odno±ników z ka»dej
strony i poziomów zagª¦bienia w hierarchii podstron danej domeny.
4.
Pobieranie zasobów
Pobranie nagªówków HTTP, zawarto±ci odwiedzanych stron
oraz zasobów zewn¦trznych, do których si¦ ona odnosi.
5.
6.
Wykonanie pomiarów Pomiar charakterystyk odwiedzanych stron:
•
liczba »¡da« HTTP,
•
liczba i rozmiar zewn¦trznych zasobów (obrazów, skryptów, styli),
•
liczba hostów przechowuj¡cych zasoby zewn¦trzne,
•
wielko±¢ transferu (z uwzgl¦dnieniem kompresji),
•
rozmiar strony (dokumenty wraz z zasobami zewn¦trznymi),
•
liczba nadmiarowych »¡da« skryptów i arkuszy styli,
•
liczba znaczników HTML ka»dego rodzaju,
•
liczba ciasteczek,
•
status odpowiedzi HTTP,
•
czas ªadowania strony.
Obliczanie statystyk
Obliczenie statystycznego modelu strony poprzez arytme-
tyczne u±rednianie warto±ci wy»ej wymienionych charakterystyk.
62
Wymagania niefunkcjonalne:
1.
Odporno±¢ na bª¦dy
Detekcja przekierowa« i cykli eksploracji, obsªuga bª¦dnego
kodu HTML, odporno±¢ na nieprzewidziane zachowanie serwera oraz sieci.
2.
Przestrzeganie etykiety Ograniczenie tempa wysyªania »¡da« do tego samego serwera, identykacja robota poprzez pola nagªówka HTTP, zastosowanie wyklucze« zapisanych w pliku
3.
robots.txt.
Bezpiecze«stwo Brak negatywnego wpªywu na bezpiecze«stwo i stabilno±¢ systemu
operacyjnego.
4.
Rozproszono±¢
Zdolno±¢ dystrybucji przetwarzania na wiele jednostek obliczenio-
wych, potencjalnie oddalonych od siebie.
5.
Wydajno±¢ Efektywna utylizacja dost¦pnych zasobów komputera, mocy obliczeniowej i przepustowo±ci sieci.
6.
Skalowalno±¢ Šatwo±¢ zwi¦kszania tempa eksploracji sieci poprzez dodawanie nowych
maszyn i zwi¦kszanie przepustowo±ci sieci.
7.
Rozszerzalno±¢ Modularna architektura pozwalaj¡ca na przyszªe rozszerzenie funkcjonalno±ci w kontek±cie nowych formatów danych lub protokoªów sieciowych.
6.3
Przypadki u»ycia
Rysunek 6.2: Diagram przypadków u»ycia
63
6.4
Architektura
Referencyjna architektura robota internetowego bazuje na kilku komponentach, które niemal
zawsze pojawiaj¡ w ka»dej realizacji takiego oprogramowania (rys. 6.3):
Rysunek 6.3: Referencyjna architektura robotów internetowych [14].
queue, frontier ),
•
kolejka adresów URL do przetworzenia (ang.
•
planista przydziaªu adresu URL do robota internetowego (ang.
•
moduª pobieraj¡cy wskazane zasoby z sieci (ang.
•
parser odno±ników z uzyskanego dokumentu (ang.
•
magazyn trwale przechowuj¡cy zebrane dane (ang.
scheduler ),
downloader ),
URL extractor ),
storage ).
Adaptacja architektury referencyjnej polegaªa na zapewnieniu pewnego stopnia skalowal-
horizontal scalability ). Wi¡zaªo si¦ to z wprowadzeniem moduªu nadzorcy (ang. supervisor ), który
no±ci aplikacji poprzez mo»liwo±¢ dodawania kolejnych instancji przetwarzaj¡cych (ang.
odpowiada za uruchamianie, monitorowanie i prawidªowe ko«czenie pracy robotów wspóªbie»nie dziaªaj¡cych w obr¦bie pojedynczej maszyny. Rozdystrybuowanie procesów nadzorcy
na kilka maszyn pozwala na elastyczne zwi¦kszenie liczby uruchamianych robotów oraz efektywn¡ utylizacj¦ dost¦pnych zasobów sprz¦towych.
Rysunek 6.4: Wªasna architektura robota internetowego.
Dodatkowo dostarczono przezroczyst¡ warstw¦ komunikacyjn¡ pomi¦dzy moduªami, która
remote procedure call ). Idea ta
stub ), które nast¦pnie delegowane
bazuje na koncepcji wywoªywania procedur zdalnych (ang.
polega na wywoªywaniu metod w kontek±cie zal¡»ka (ang.
s¡ do peªnoprawnego obiektu, by¢ mo»e znajduj¡cego si¦ na odlegªej maszynie. Dzi¦ki temu,
ewentualna relokacja procesów lub wewn¦trzna zmiana sposobu komunikacji nie ma wpªywu
na kod logiki aplikacyjnej (rys. 6.4).
64
Pod wzgl¦dem przydziaªu odpowiedzialno±ci poszczególne komponenty robota internetowego mo»na podzieli¢ na warstwy: danych, komunikacji, przetwarzania, sterowania (rys. 6.5).
Rysunek 6.5: Warstwowy podziaª komponentów.
6.4.1 Warstwa danych
W celu zapewnienia trwaªo±ci danych aplikacji zrealizowano persystentny kontener asocja-
PersistenDict. Dostarcza ona podzbiór operacji sªownikowych bazuj¡c na standardowym module DbfilenameShelf, który jest
implementacj¡ uniksowego interfejsu DBM (ang. database manager ) wzbogacon¡ o mo»liwo±¢
przechowywania obiektów Pythona zserializowanych do postaci tekstowej metod¡ pickle.
cyjny typu klucz-warto±¢ reprezentowany przez klas¦
Rysunek 6.6: Diagram klas warstwy danych.
W celu zapewnienia szybko±ci dost¦pu, dane zapisywane s¡ wst¦pnie w pami¦ci operacyjnej, a dopiero po zapeªnieniu przydzielonego bufora skªadowane na dysku. Za pomoc¡ sªow-
PersistentDict zamodelowano kolejk¦ PersitentQueue, zbiór PersistentSet oraz inne
ini
po±rednictwem klasy ConfigReader.
nika
kontenery. Ponadto zapewniono mo»liwo±¢ odczytu plików konguracyjnych w formacie
za
65
6.4.2 Warstwa przetwarzania
Minimalny interfejs, który powinien by¢ realizowany przez implementacj¦ robota interneto-
BaseCrawler uogólniaj¡cej podstawowy alBatchCrawler deniuje metody pobierania zada«
wego zostaª wyspecykowany w klasie bazowej
gorytm eksploracji sieci. Pochodna klasa
z kolejki oraz sprawdzania warunku zako«czenia pracy. Natomiast logika aplikacyjna obejmuj¡ca proces pobierania zasobów z sieci oraz sposób ich przetwarzania zostaªa pozostawiona
do implementacji dalszym klasom pochodnym.
Rysunek 6.7: Diagram klas warstwy przetwarzanie.
Na potrzeby pracy tak¡ klas¡ pochodn¡ jest
StatisticsCrawler,
która reprezentuje ro-
bota zbieraj¡cego dane statystyczne na podstawie odwiedzanych stron internetowych. W tym
przypadku funkcjonalno±¢ pobierania zasobów z sieci delegowano do klasy
QWebPage z biblio-
teki PyQt wykorzystuj¡cej implementacj¦ popularnego silnika Webkit. Udost¦pniane przez ni¡
mechanizmy dost¦pu do sieci, obªugi ciasteczek, zarz¡dzania pami¦ci¡ podr¦czn¡, ªadowania
zawarto±ci Flash i kodu JavaScript zostaªy hermetyzowane w klasie
NetworkManager.
Robot
internetowy wykorzystuje j¡ dodatkowo deniuj¡c funkcje obsªugi zdarze« ªadowania strony,
jako »e silnik przegl¡darki dziaªa asynchronicznie.
Ze wzgl¦du na konieczno±¢ przestrzegania etykiety, wytyczne plików
pretowane s¡ przez narz¡dzie
RobotsParser
HttpReply
obejmuj¡cej klasy
Headers i Html
lxml
za po±rednic-
opakowuj¡ce zawarto±¢ przesyªan¡ przez
serwer HTTP. Dost¦p do warstwy sterowania odbywa si¦ poprzez klas¦
umo»liwia przesyªanie sygnaªów »ycia (ang.
inter-
z biblioteki standardowej. Przetwarzanie po-
branych zasobów i obliczanie statystyk realizowane jest przez bibliotek¦
twem
robots.txt
heartbeats )
Hypervised,
która
do procesu nadzoruj¡cego robota.
Natomiast zapisywanie danych delegowane jest do warstwy danych przez przezroczyste serwery RPC kolejki
i
URLTracker
TaskQueue i ResultQueue, rejestry odwiedzonych adresów AliasTracker
Blacklist.
oraz czarnej listy
66
6.4.3 Warstwa komunikacji
Schemat komunikacji pomi¦dzy komponentami aplikacji zrealizowano zgodnie z koncepcj¡
RPC (ang.
remote procedure call ).
Jej podstaw¡ jest ogólna klasa
RPCServer,
która umo»li-
wia wywoªywanie wªasnej metody poprzez podanie jej nazwy oraz dostarczenie argumentów.
Ze wzgl¦dów bezpiecze«stwa metody przeznaczone do wywoªywania w ten sposób oznaczane
s¡ dekoratorem
@rpc,
co zapobiega modykacji wewn¦trznych struktur serwera.
Klasa w poª¡czeniu ze standardowym moduªem
ThreadingTCPServer
funkcjonuje jako
wielow¡tkowy serwer TCP, który realizuje »¡dania klienta posªuguj¡cego si¦ jego zal¡»kiem
(ang.
stub ).
Taka namiastka ma wszystkie cechy peªnoprawnego obiektu, jednak w rzeczywi-
sto±ci jakakolwiek interakcja przezroczy±cie delegowana jest do serwera. Obiekty przesyªane
mi¦dzy klientem a serwerem serializowane s¡ do postaci tekstowej w klasie
przy u»yciu techniki
PickleSerializer
pickle, dzi¦ki czemu zachowuj¡ semantyk¦ obiektów Pythona i na przy-
kªad umo»liwiaj¡ zdalne zgªoszenie wyj¡tku.
Rysunek 6.8: Diagram klas warstwy komunikacji.
Mechanizm wywoªa« dostarczany przez serwer RPC wykorzystywany jest przez klasy
QueueServer, SetServer i DictServer,
niezb¦dne do komunikacji z persystentnymi konten-
terami warstwy danych. Wielow¡tkowy dost¦p do tych struktur zrealizowano za pomoc¡ klasy
SynchronizedWrapper,
która synchronizuje wywoªania metod wspóªdzielonego zasobu.
67
6.4.4 Warstwa sterowania
Do warstwy sterowania nale»y nadzorca reprezentowany przez klas¦
Hypervisor,
która za-
rz¡dza pul¡ procesów tworz¡c i monitoruj¡c instancje robota internetowego. Jak wcze±niej
wspomniano, podczas eksploracji sieci robot mo»e napotka¢ nieprzewidziane z góry puªapki
oraz problemy w komunikacji z serwerami HTTP, dlatego te» awaryjne zako«czenie jego procesu jest naturalnym zjawiskiem nowa instancja zostanie powoªana przez nadzorc¦, dzi¦ki
czemu aplikacja zachowa stabilno±¢ i odporno±¢ na bª¦dy.
Rysunek 6.9: Diagram klas warstwy sterowania.
Oprócz tego nadzorca funkcjonuje jako serwer RPC odbieraj¡cy sygnaªy »ycia od stworzonych instacji robota, które dzi¦ki rozszerzeniu klasy
Hypervised maj¡ mo»liwo±¢ informowania
o prawidªowym dziaªaniu. Mechanizm ten jest konieczny ze wzgl¦du na mo»liwo±¢ zablokowania operacji wej±cia-wyj±cia podczas dost¦pu do sieci przez nieprawidªowo funkcjonuj¡ce
serwery HTTP. Taka sytuacja mo»e by¢ wykryta jedynie przez brak komunikacji w zadanym czasie ze strony robota. Wówczas jego instancja jest uruchamiana ponownie, a aplikacja
odzyskuje jednostki przetwarzania.
6.5
Technologia realizacji
Program zostaª zaimplementowany w j¦zyku Python (2.7.3) przy u»yciu biblioteki
dostarczaj¡cej implementacj¦ silnika przegl¡darki Webkit oraz narz¦dzia
lxml
PyQt
(4.10)
(3.2) wspoma-
gaj¡cego przetwarzanie struktury dokumentu HTML. Wykorzystane pakiety biblioteki standardowej obejmuj¡ moduªy
json, pickle, shelve, configparser, robotparser, TCPServer.
Wybór j¦zyka programowania umotywowany jest dynamicznym typowaniem, szybko±ci¡
prototypowania, obszerno±ci¡ biblioteki standardowej zawieraj¡cej niemal wszystkie niezb¦dne
narz¦dzia oraz dost¦pno±ci¡ szerokiej gamy bibliotek zewn¦trznych, maj¡cych zastosowanie
w aplikacjach sieciowych, technologiach internetowych i rozwi¡zaniach rozproszonych.
68
6.6
Instrukcja u»ytkownika
Do uruchomienia aplikacji wymagana jest maszyna z dost¦pem do Internetu, dziaªaj¡ca pod kon-
PyQt i lxml.
WebsiteStatistics obejmuje podkatalog src z jednostkami kodu ¹ródªowego *.py oraz podkatalog res zawieraj¡cy kontenery danych *.db, plik konguracji
config.ini i bazowy zbiór miliona adresów URL top-1m.csv.zip z serwisu Alexa.org.
trol¡ systemu Linux, z zainstalowanym interpreterem j¦zyka Python, bibliotek¡
Katalog projektu
Uruchamianie komponentów aplikacji polega na wykonaniu nast¦puj¡cych kroków:
1. Wyeksportowanie ±cie»ki do katalogu zawieraj¡cego kod ¹ródªowy:
> cd src
> export PYTHONPATH=`pwd`
2. Przej±cie do katalogu zawieraj¡cego skrypty uruchomieniowe:
> cd Run
3. Umieszczenie w kolejce okre±lonej liczby adresów URL z serwisu
Alexa.org,
z uwzgl¦d-
nieniem liczby ekstraktowanych odno±ników i poziomów zagª¦bienia dla ka»dego adresu.
Przykªadowo, wybór TOP 10000 stron, dla ka»dej ekstrakcja maksymalnie 12 odno±ników z dozwolonym zagª¦bieniem 2 poziomów podstron:
> ./InsertTasks.py 10000 12 2
4. Uruchomienie serwerów RPC dost¦pu do warstwy danych zbiór odwiedzonych adresów,
kolejka zada« i rezultatów (pomini¦to wykorzystanie czarnej listy i rejestru aliasów):
> ./UrlTracker.py &
> ./TaskQueue &
> ./ResultQueue &
5. Uruchomienie zarz¡dcy instancji robota internetowego:
> ./CrawlerHypervisor.py &
6. Zako«czenie pracy komponentów, które zostaªy powoªane jako procesy tªa poprzez wysªanie do nich sygnaªu
kill
w kolejno±ci odwrotnej do uruchamiania:
> kill `jobs -p | sort -r`
7. Wy±wietlenie zada« pozostaªych w kolejce:
> ./ShowTasks.py | less
8. Wy±wietlenie dotychczas zebranych statystyk:
> ./ShowResults.py | less
9. Wygenerowanie zebranych statystyk stron internetowych w formacie
> ./CreateReport.py
69
csv:
Rozdziaª 7
Eksperymentalna optymalizacja
±rodowiska protokoªu HTTP
W ramach pracy przeprowadzono eksperyment polegaj¡cy na zastosowaniu wybranych technik optymalizacyjnych w izolacji oraz zbiorczo w kontek±cie kilku stron internetowych o ró»nej charakterystyce. Pomiary zebrano w postaci kaskadowego widoku zasobów dostarczanego
przez wtyczk¦ Firebug do przegl¡darki Firefox [30]. Taka reprezentacja rezultatów pozwala
na zademonstrowanie zale»no±ci czasowych kolejnych etapów transmisji (rys. 7.1). Pomini¦to
jednak fazy zapytania DNS oraz zestawiania poª¡czenia ze wzgl¦du na ich zmienne opó¹nienie
polegano natomiast na uprzednio nawi¡zanych poª¡czeniach trwaªych.
Rysunek 7.1: Oznaczenia kaskadowego widoku zasobów.
7.1
Przegl¡d technik optymalizacyjnych
Pierwszy test polega na zbadaniu skuteczno±ci poszczególnych technik optymalizacyjnych powszechnie stosowanych w kontek±cie klienta, serwera lub zasobu. Elementy te stanowi¡ bowiem
ortogonalne cz¦±ci ±rodowiska dziaªania protokoªu HTTP (rys. 7.2).
Rysunek 7.2: ‘rodowisko protokoªu HTTP.
Struktura i rozmiar stron b¦d¡cych przedmiotem testów odpowiada modelowi statystycznemu zbudowanemu na podstawie wªasnej eksploracji sieci. Jednak liczba zasobów zewn¦trznych zostaªa proporcjonalnie zmniejszona, aby zapewni¢ czytelno±¢ generowanych widoków.
70
7.1.1 Liczba równolegªych poª¡cze«
Zgodnie z wytycznymi standardu HTTP/1.1 w przegl¡darkach stosuje si¦ wyª¡cznie poª¡czenia trwaªe, a z powodu braku upowszechnienia mechanizmu potokowania jego obsªuga jest
deaktywowana. Jedynym parametrem konguracyjnym z perspektywy klienta pozostaje wi¦c
liczba poª¡cze« zestawianych jednocze±nie do pojedynczego serwera. Standard zaleca 2 takie
poª¡czenia, jednak w praktyce przegl¡darki wykorzystuj¡ do 6 równolegªych poª¡cze«.
W celu zbadania wpªywu liczby poª¡cze« na wydajno±¢ protokoªu zbudowano stron¦ skªadaj¡c¡ si¦ z kilkunastu zasobów obejmuj¡cych arkusze styli, skrypty i obrazy. W ramach testu
zmierzono czas ªadowania strony wykorzystuj¡c od 1 do 12 równolegªych poª¡cze« (tab. 7.1).
Poª¡czenia
Opó¹nienie
Przyspieszenie
1
10.08 s
Poprawa
2
6.65 s
34.02 %
34.02 %
3
5.91 s
41.37 %
7.35 %
4
5.35 s
46.92 %
5.55 %
5
5.10 s
49.40 %
2.48 %
6
4.86 s
51.79 %
2.39 %
7
4.70 s
53.37 %
1.58 %
8
4.55 s
54.86 %
1.49 %
9
4.52 s
55.16 %
0.30 %
10
4.49 s
55.46 %
0.30 %
11
4.48 s
55.56 %
0.10 %
12
4.45 s
55.85 %
0.29 %
Tablica 7.1: Wpªyw liczby poª¡cze« na redukcj¦ opó¹nienia.
Jak mo»na zauwa»y¢, najwi¦ksza wzgl¦dna poprawa o wielko±ci 34% osi¡gane jest przy
zastosowaniu 2 poª¡cze«, natomiast ustawienie 6 poª¡cze« pozostaje optymaln¡ konguracj¡,
poniewa» zwi¦kszanie liczby powy»ej tego progu nie przynosi wymiernych korzy±ci (rys. 7.3).
Rysunek 7.3: Wpªyw liczby poª¡cze« na redukcj¦ opó¹nienia.
Przykªadowo, ograniczaj¡c liczb¦ poª¡cze« do 1, czas zaªadowania strony wyniósª 10.08 s
(rys. 7.4). Natomiast dopuszczaj¡c mo»liwo±¢ zestawiania do 6 równolegªych poª¡cze«, opó¹nienie zostaªo zredukowane do 4.86 s (rys. 7.5) Dalsze zwi¦kszanie liczby poª¡cze« jest nieopªacalne, poniewa» opó¹nienie ograniczone jest od doªu przez czas wykonywania skryptów
oraz maksimum z czasów transmisji poszczególnych zasobów.
71
Rysunek 7.4: Wykorzystanie 1 poª¡czenia.
Rysunek 7.5: Wykorzystanie 6 równolegªych poª¡cze«.
72
7.1.2 Kompresja gzip
Mechanizm kompresji gzip jest technik¡ optymalizacyjn¡ wdra»an¡ po stronie serwera. Sªu»y
do zredukowania wielko±ci transferu poprzez zast¦powanie powtarzaj¡cych si¦ fragmentów danych krótszymi identykatorami. Z tego wzgl¦du z powodzeniem stosuje si¦ go w kontek±cie
plików tekstowych w przeciwie«stwie do plików gracznych, które s¡ uprzednio kompresowane, a nadmierna optymalizacja mo»e prowadzi¢ nawet do zwi¦kszenia ich rozmiaru.
Rysunek 7.6: Brak kompresji gzip.
W celu zbadania skuteczno±ci kompresji gzip przygotowano stron¦ zawieraj¡c¡ arkusz styli
oraz skrypt o rozmiarach odpowiednio 58 kB i 67 kB, które wraz z dokumentem osi¡gn¦ªy rozmiar 126 kB. Bez stosowania kompresji gzip czas zaªadowania strony wyniósª 2.24 s (rys. 7.6).
Natomiast po aktywowaniu tego mechanizmu dla plików CSS i JS rozmiar pierwotnych zasobów zostaª zmniejszony do 8 kB i 18 kB, a opó¹nienie zredukowano do 1.21 s, co mo»na
interpretowa¢ jako przyspieszenie rz¦du 45%.
Rysunek 7.7: Zastosowanie kompresji gzip.
Zastosowanie kompresji gzip wobec plików tekstowych pozwala na znaczne zwi¦kszenie
wydajno±ci protokoªu HTTP. Mechanizm ten jest ªatwy do aktywowania po stronie serwera,
a przegl¡darki domy±lnie wspieraj¡ jego obsªug¦ bez konieczno±ci dodatkowej konguracji.
73
7.1.3 Infrastruktura CDN
Zastosowanie infrastruktury CDN polega na zwielokrotnieniu i rozdystrybuowaniu zasobów
zewn¦trznych strony na kilka osobnych serwerów rozproszonych geogracznie w celu minimalizacji opó¹nienia podczas ich transmisji. Ze wzgl¦du na kosztowno±¢ tej metody, na potrzeby
bada« wykorzystano zasoby innego portalu ju» rozproszone w obr¦bie takiej infrastruktury.
Rysunek 7.8: Brak infrastruktury CDN.
Dla sprawdzenia skuteczno±ci tej techniki zbudowano stron¦ skªadaj¡c¡ si¦ z 1 arkusza
styli, 5 skryptów i 8 obrazów w sumie wraz z dokumentem zajmuj¡cych 42 kB. Czas transmisji pojedynczych zasobów przed zastosowaniem tej metody optymalizacji wynosiª 200-400 ms,
a do momentu wy±wietlenia strony upªyn¦ªo 1.08 s (rys. 7.8). Natomiast po wdro»eniu infrastruktury pojedyczne »¡dania zasobów trwaªy jedynie 15-30 ms w sumie daj¡c zaledwie
385 ms opó¹nienia (rys. 7.9) i skutkuj¡c popraw¡ wielko±ci 60%.
Rysunek 7.9: Zastosowanie infrastruktury CDN.
Zastosowanie infrastruktury CDN wyra¹nie redukuje opó¹nienie transmisji komunikatów,
deleguj¡c »¡dania do kilku rozproszonych serwerów, które w idealnej sytuacji poªo»one s¡
blisko u»ytkownika (w kontek±cie liczby po±rednich w¦zªów sieci). Taka metoda optymalizacji
jest skuteczna oraz dodatkowo poprzez replikacj¦ i rozproszenie zasobów zewn¦trznych zwi¦ksza stabilno±¢ i skalowalno±¢ witryny. W praktyce rozwi¡zanie wci¡» jest kosztowne, dlatego
te» wdra»aj¡ je popularne serwisy, dla których opó¹nienie oraz pogorszenie interaktywno±ci
mo»e skutkowa¢ utrat¡ licznego grona u»ytkowników.
74
7.1.4 Eksternalizacja a osadzanie zasobów
Osadzanie zasobów polega na wplataniu zawarto±ci zasobów w kod strony, co sprawia »e
nie s¡ one przesyªane w ramach dodatkowych »¡da« protokoªu HTTP. Z kolei eksternalizacja
zasobów to doª¡czanie ich za po±rednictwem zewn¦trznych plików, dzi¦ki czemu transfer mo»e
by¢ optymalizowany za pomoc¡ poª¡cze« równolegªych, kompresji gzip i pami¦ci podr¦cznej.
Rysunek 7.10: Zasoby osadzone w kodzie strony.
W celu porównania tych dwóch schematów doª¡czania zasobów przygotowano stron¦
z 3 skryptami i 1 arkuszem styli. W pierwszym przypadku zostaªy one wplecione w kod
strony, skutkuj¡c transmisj¡ 76 kB danych w czasie 737 ms (rys. 7.10).
Rysunek 7.11: Zasoby zewn¦trzne podczas pierwszego pobrania.
W drugim przypadku zasoby doª¡czono w postaci osobnych plików czas zaªadowania
tak skongurowanej strony wyniósª 853 ms, pomimo wykorzystania równolegªych poª¡cze«
i kompresji gzip (rys. 7.11). Jednak podczas kolejnego pobierania tej samej strony zostaªa
wykorzystana pami¦¢ podr¦czna, co pozwoliªo unikn¡¢ ponownej transmisji zasobów i zredukowaªo opó¹nienie do 655 ms (rys. 7.12).
Rysunek 7.12: Zasoby zewn¦trzne podczas kolejnych pobra«.
Eksternalizacja zasobów jest technik¡ optymalizacyjn¡ stosowan¡ niejawnie, poniewa» zazwyczaj zasoby domy±lnie doª¡czane s¡ w formie plików zewn¦trznych. Dzi¦ki temu usprawnienia protokoªu HTTP/1.1 w postaci poª¡cze« równolegªych, kompresji gzip i pami¦ci podr¦cznej mog¡ zosta¢ naturalnie wykorzystane. Jednak»e w niektórych przypadkach, gdy pewne
zasoby maj¡ niewielki rozmiar i s¡ wykorzystywane jednokrotnie w obr¦bie caªego serwisu,
warto przemy±le¢ ich osadzenie w kodzie strony, aby zminimalizowa¢ narzut na transmisj¦
dodatkowych komunikatów protokoªu.
75
7.1.5 Konkatenacja zasobów
Scalanie zasobów w postaci plików tekstowych dotyczy skryptów i arkuszy styli, które mog¡
zosta¢ poª¡czone w celu zmniejszania liczby »¡da« HTTP i tym samym prowadzi¢ do zredukowania wypadkowego czasu ªadowania strony.
Rysunek 7.13: Zasoby rozª¡czne.
Na potrzeby testu zbudowano witryn¦ zawieraj¡c¡ 7 skryptów zajmuj¡cych wraz z dokumentem 22 kB. Czas transmisji zasobów wynosiª 200-700 ms, przez co ªadowanie strony zaj¦ªo
969 ms (rys. 7.13). Poª¡czenie kilku skryptów w jeden zwi¦kszyªo skuteczno±¢ kompresji gzip
oraz zmniejszyªo liczb¦ dodatkowych »¡da« z 7 do 1 trwaj¡cego 393 ms. Dzi¦ki temu strona
wy±wietliªa si¦ ju» po 633 ms, przynosz¡c w rezultacie przyspieszenie do 35%(rys. 7.14).
Rysunek 7.14: Zasoby scalone.
Przeprowadzona eksploracja sieci we wªasnych zakresie wykazaªa, »e na stron¦ ±rednio
przypada do 9 nadmiarowych »¡da« w kontek±cie skryptów i arkuszy styli (rozdz. 6). Mo»na
by je wyeliminowa¢ scalaj¡c te zasoby, co jest ªatwym i tanim rozwi¡zaniem. Jednak ten sposób optymalizacji nale»y traktowa¢ z umiarem, poniewa» scalenie wielu zasobów danego typu
powoduje, »e mechanizm poª¡cze« równolegªych protokoªu HTTP nie jest w peªni wykorzystywany, a wypadkowy czas ªadowania strony nieoptymalny.
76
7.1.6 Miniaturyzacja zasobów
Miniaturyzacja zasobów dotyczy usuwania biaªych znaków z plików tekstowych oraz kompresji obrazów, pozwalaj¡c na zredukowanie ich rozmiaru zwªaszcza je»eli zasoby te zostaªy
uprzednio scalone.
Rysunek 7.15: Zasoby o pierwotnym rozmiarze.
W ramach testu przygotowano stron¦ zawieraj¡c¡ 2 skrypty o rozmiarze 11 kB i 73 kB,
przez co wypadkowy transfer wyniósª 86 kB. Przed zastosowaniem optymalizacji zaªadowanie
strony zaj¦ªo 1.06 s (rys. 7.15), natomiast po zmniejszeniu rozmiaru zasobów, czas oczekiwania
osi¡gn¡ª 853 ms (rys. 7.16), co przekªada si¦ na przyspieszenie rz¦du 20%.
Rysunek 7.16: Zasoby o zredukowanym rozmiarze.
Miniaturyzacja plików wymaga zastosowania zewn¦trznych narz¦dzi, które automatyzuj¡
proces redukowania rozmiaru zasobu, ale jest to kolejne przyst¦pne rozwi¡zanie pozwalaj¡ce
osi¡gn¡¢ zauwa»aln¡ popraw¦ czasu transmisji za po±rednictwem protokoªu HTTP.
77
7.1.7 Pozycjonowanie skryptów
Skrypty zaª¡czone w strukturze strony blokuj¡ dalsze parsowanie dokumentu przez przegl¡dark¦ a» do momentu ich wykonania. Z tego powodu równie» pobieranie kolejnych zasobów
jest wstrzymywane. W znacznej mierze pogarsza to wydajno±¢ mechanizmu równolegªych poª¡cze« dostarczanego przez protokóª HTTP.
Rysunek 7.17: Skrypty umieszczone na górze strony.
Na potrzeby bada« zrealizowano witryn¦ skªadaj¡c¡ si¦ ze skryptu doª¡czonego na górze
strony oraz 5 obrazów umieszczonych za nim w kodzie HTML, w sumie zajmuj¡cych 8 kB. Czas
wykonania skryptu ustawiono na 250 ms poprzez wywoªanie z jego poziomu funkcji
sleep().
Takie umiejscowienie kodu JavaScript powoduje niemo»no±¢ jednoczesnego pobrania obrazów, dlatego te» caªkowite opó¹nienie wynosi 731 ms (rys. 7.17). W przypadku umieszczenia
skryptu na dole strony, parsowanie dokumentu nie jest blokowane i wszystkie zasoby zostaªy
pobrane równolegle w czasie 485 ms, co stanowi ponad 30% poprawy (rys. 7.18).
Rysunek 7.18: Skrypty umieszczone na dole strony.
Umieszczenie dªugo wykonuj¡cych si¦ skryptów na dole dokumentu HTML mo»e znakomicie przyspieszy¢ czas ªadowania strony. Ta technika jest ªatwa do realizacji i nie wymaga
modykowania »adnych zasobów poza wprowadzeniem drobnych zmian w kodzie strony, najlepiej po scaleniu i zminiaturyzowaniu wybranych fragmentów kodu JavaScript.
78
7.1.8 Mapy obrazów
Zastosowanie map obrazów polega na scaleniu niewielkich plików gracznych (ikon, przycisków, logotypów, etc.) oraz dost¦p do nich poprzez specykowanie wspóªrz¦dnych i rozmiaru
za pomoc¡ arkuszy styli lub znacznika
<map>. Takie podej±cie pozwala na zredukowanie liczby
»¡da« HTTP, które dla niewielkich zasobów stanowi¡ wyra¹ny narzut.
Rysunek 7.19: Brak optymalizacji obrazów.
Na potrzeby testu przygotowano stron¦ zawieraj¡c¡ 5 obrazów GIF o rozmiarze 1.2 kB.
Transmisja takiej strony z obrazami doª¡czonymi jako osobne zasoby zewn¦trzne zaj¦ªa 514 ms,
transfer poszczególnych plików zostaª efektywnie zrównoleglony (rys. 7.19). Š¡cz¡c pliki graczne do postaci mapy obrazów o rozmiarze 2.8 kB zredukowano liczb¦ »¡da«, a opó¹nienie
zmniejszono do 424 ms, co przekªada si¦ na 15% wzrostu wydajno±ci (rys. 7.20).
Rysunek 7.20: Zastosowanie mapy obrazów.
W skrajnym przypadku, aby wyeliminowa¢ wszystkie dodatkowe »¡dania, obrazy mog¡
by¢ osadzone w kodzie strony, prowadz¡c do zmniejszenia czasu ªadowania strony do 218 ms
(rys. 7.21). Jednak takie rozwi¡zanie, jak ju» wcze±niej wspomniano, skuteczne jest dla plików
znikomej wielko±ci oraz wykorzystywanych jednokrotnie.
Rysunek 7.21: Obrazy osadzone w kodzie strony.
Opisywana technika optymalizacyjna wymaga selekcji plików gracznych o niewielkim
rozmiarze, które wyst¦puj¡ razem w obr¦bie danej strony. Zastosowanie mapy obrazów lub
zdecydowanie si¦ na ich osadzenie w kodzie strony zale»ne jest od cz¦sto±ci wykorzystywania.
Wdro»enie tego usprawnienia wymaga jednak pewnego nakªadu pracy na obróbk¦ graki.
79
Porównanie
W ramach eksperymentu zwerykowano kilka powszechnych technik optymalizacyjnych protokoªu HTTP w kontek±cie klienta, serwera i zasobu. Ró»ni¡ si¦ one przede wszystkim skuteczno±ci¡, kosztami wdro»enia i utrzymania (tab. 7.2).
Kontekst
Technika
Przed
Po
Przyspieszenie
Koszty
Klient
Liczba poª¡cze«
10.08 s
4.86 s
51.79 %
maªe
Kompresja gzip
2.24 s
1.21 s
45.98 %
maªe
Sie¢ CDN
1080 ms
385 ms
64.35 %
du»e
Eksternalizacja
737 ms
655 ms
11.33 %
maªe
Konkatenacja
969 ms
633 ms
34.67 %
±rednie
±rednie
Serwer
Zasób
Miniaturyzacja
1060 ms
853 ms
19.52 %
Skrypty na dole
731 ms
485 ms
33.65 %
maªe
Mapy obrazów
514 ms
424 ms
17.51 %
±rednie
Osadzanie
514 ms
218 ms
57.59 %
±rednie
Tablica 7.2: Porównanie skuteczno±ci technik optymalizacyjnych.
Z tego wzgl¦du zaleca si¦ wprowadzanie usprawnie« protokoªu w nast¦puj¡cej kolejno±ci:
1.
Liczba poª¡cze« Podstawowym rozwi¡zaniem jest wybór przegl¡darki wspieraj¡cej
mechanizmy HTTP/1.1 oraz konguracja 6 równolegªych poª¡cze« na serwer. W przypadku posiadania wydajnej maszyny mo»na ustawi¢ 8 takich poª¡cze« lub zainstalowa¢
wtyczk¦ optymalizuj¡c¡ prac¦ przegl¡darki (np.
2.
Kompresja gzip
Fasterfox ).
Wyspecykowanie plików tekstowych (HTML, XML, CSS, JS)
w konguracji mechanizmu kompresji gzip po stronie serwera przekªada si¦ na zmniejszenie rozmiaru danych transportowanych przez sie¢, a tak»e zredukowanie czasu oczekiwania na zaªadowanie strony.
3.
Eksternalizacja lub osadzanie zasobów
Selekcja niewielkich zasobów wykorzy-
stywanych jednokrotnie i wplecienie ich w kod strony efektywnie redukuje liczb¦ »¡da«.
Dla pozostaªych zasobów doª¡czanych z zewn¦trz warto odpowiednio skongurowa¢ pola
ETag
4.
lub
Expires
w celu optymalizacji mechanizmu pami¦ci podr¦cznej.
Pozycjonowanie skryptów Umieszczenie skryptów na dole strony pozwala unikn¡¢
blokowania kolejnych zasobów i degradacji mechanizmu równolegªych poª¡cze«.
5.
Scalenie zasobów
Poª¡czenie skryptów i arkuszy styli w pojedyncze zasoby oraz
zastosowanie map obrazów dla wyst¦puj¡cych razem niewielkich plików gracznych prowadzi do ograniczenia wysyªanych »¡da«. Nale»y jednak wzi¡¢ pod uwag¦ korzy±ci, jakie
niesie mechanizm równolegªych poª¡cze« w kontek±cie wielu oddzielnych zasobów.
6.
Miniaturyzacja zasobów
Usuni¦cie biaªych znaków ze skryptów i styli oraz opty-
malna kompresja obrazów lub wykorzystanie techniki indeksowania palety barw pomaga
zmniejszy¢ wielko±¢ transferu i czas transmisji tak przygotowanych zasobów.
7.
Infrastruktura CDN Zwielokrotnienie zasobów w obr¦bie geogracznie rozproszonych serwerów zapewnia znaczn¡ redukcj¦ opó¹nienia transmisji. W przypadku braku
±rodków na pokrycie kosztów wdro»enia i utrzymania dodatkowej infrastruktury warto
wzi¡¢ pod uwag¦ zastosowanie techniki partycjonowania domeny.
80
7.2
Optymalizacja przykªadowych stron
Drugi test polega na skonstruowaniu kilku typowych stron internetowych, okre±leniu scenariuszy ich dziaªania, a nast¦pnie przeprowadzeniu optymalizacji za pomoc¡ wybranych technik.
Pozwoli to na zbadanie skuteczno±ci usprawnie« protokoªu HTTP w warunkach zbli»onych
do rzeczywistych. Ostatecznie zdecydowano si¦ na konstrukcj¦ odpowiedników portalu informacyjnego, galerii obrazów oraz wyszukiwarki sieciowej (tab. 7.3).
Atrybut
Pliki
Portal
Galeria
Wyszukiwarka
Tekst
HTML, XML
Obrazy
JPG, PNG, GIF
•••
••
••
••
••
••
••
•••
•••
•
•••
•
•
•
•
•••
•
•••
Interfejs
CSS, JS
Przetwarzanie
PHP, CGI
Zasoby ogóªem
Obci¡»enie ogóªem
Tablica 7.3: Porównanie charakterystyk wybranych stron internetowych [70].
Wybrane typy stron internetowych ró»ni¡ si¦ pod wzgl¦dem przeznaczenia (intensywno±¢
przetwarzania, nat¦»enie ruchu) oraz struktury (typ, rozmiar, liczba zasobów). Z tego wzgl¦du
nie wszystkie optymalizacje b¦d¡ skuteczne lub opªacalne dla ka»dego z serwisów dlatego
wybór odpowiednich usprawnie« dla poszczególnych stron zostaª dokªadnie przeanalizowany.
7.2.1 Optymalizacja portalu informacyjnego
Bazuj¡c na charakterystyce strony BBC News za reprezentacj¦ portalu informacyjnego przyj¦to dokument zawieraj¡cy du»¡ ilo±¢ danych tekstowych, liczne zdj¦cia oraz nietrywialny
interfejs u»ytkownika (rys. 7.22). Zakªada si¦, »e serwis wykorzystuje zewn¦trzne biblioteki
JavaScript, a obrazy oraz tekst s¡ dynamicznie dostarczane przez redaktorów.
Dlatego te» zasoby nie zawsze mog¡ by¢ odpowiednio zoptymalizowane pod k¡tem wydajno±ci transmisji. Portal cechuje si¦ ponadprzeci¦tnym stopniem przetwarzania po stronie
serwera oraz niemaª¡ liczb¡ u»ytkowników jednocze±nie odwiedzaj¡cych witryn¦.
Rysunek 7.22: Wzorcowy portal informacyjny
81
BBC.co.uk.
Bior¡c pod uwag¦ brak peªnej kontroli nad umieszczanymi zasobami przez dostawców tre±ci, skoncentrowano si¦ na stosowaniu usprawnie« w kontek±cie serwera i pami¦ci podr¦cznej:
•
aktywowanie kompresji gzip dla plików tekstowych,
•
konguracja pól nagªówka
•
eksternalizacja zasobów w celu usprawnienia pami¦ci podr¦cznej,
•
wdro»enie infrastruktury CDN lub wykorzystanie techniki partycjonowania domeny
ETag i Expires,
dla zasobów pochodz¡cych z wªasnych ¹ródeª.
Rysunek 7.23: Brak optymalizacji portalu informacyjnego.
Przed zastosowaniem technik optymalizacyjnych wy±wietlenie portalu wymagaªo przesªania 244 kB danych w czasie 4.98 s (rys. 7.23). Po wdro»eniu i parametryzacji usprawnie«
udaªo si¦ zredukowa¢ wielko±¢ transferu do 111 kB, a opó¹nienie do 1.64 s (rys.7.24).
Przeniesienie wi¦kszo±ci zasobów do sieci CDN pozwoliªo na zmniejszenie czasu transmisji
pojedynczych zasobów z 300-900 ms do 10-90 ms. Przekªada si¦ to na uzyskanie trzykrotnego
przyspieszenia wypadkowego, jednak dolne ograniczenie optymalizacji czasu stanowi¡ zasoby
znajduj¡ce si¦ poza infrastruktur¡ CDN. Z kolei dwukrotna redukcja rozmiaru przesyªanych
danych to zasªuga kompresji gzip zastosowanej w kontek±cie dominuj¡cych plików tekstowych.
Rysunek 7.24: Optymalizacja portalu informacyjnego.
82
7.2.2 Optymalizacja galerii obrazów
Przykªadow¡ galeri¦ obrazów zbudowano wzoruj¡c si¦ na ocjalnej witrynie marki PENTAX
(rys. 7.25). Za typowe cechy takiej strony przyj¦to niewielk¡ ilo±¢ tekstu wyst¦puj¡c¡ jedynie
w postaci tytuªów i opisów fotograi, natomiast du»¡ liczb¦ zasobów zewn¦trznych. Zaliczaj¡
si¦ do nich zdj¦cia, graczne elementy interfejsu u»ytkownika, a tak»e skrypty i arkusze styli
zapewniaj¡ce efektowny wygl¡d serwisu.
W ramach bada« wydajno±ci transmisji HTTP zakªada si¦, »e serwer znajduje si¦ poza
kontrol¡ na zewn¦trznym hostingu. Intensywno±¢ oblicze« po jego stronie jest niewielka, podobnie jak tempo wysyªania »¡da« przez u»ytkowników równocze±nie odwiedzaj¡cych witryn¦.
Rysunek 7.25: Wzorcowa galeria obrazów
PentaxPhotoGallery.com.
Ze wzgl¦du na wykorzystanie zdj¦¢, skryptów i arkuszy styli wªasnego autorstwa, optymalizacja wydajno±ci protokoªu skupia si¦ na redukcji liczby »¡da« i rozmiaru owych zasobów:
•
kompresja obrazów,
•
usuni¦cie metadanych z plików gracznych,
•
miniaturyzacja skryptów i arkuszy styli,
•
scalenie skryptów i arkuszy styli o maªych rozmiarach,
•
umieszczenie skryptów na dole strony.
Wy±wietlenie pierwotnej strony zaj¦ªo 4.8 s, co obejmowaªo pobranie 564 kB danych oraz
wykonanie 24 »¡da« (rys. 7.26). Zastosowanie usprawnie« pozwoliªo na wyra¹ne zwi¦kszenie
responsywno±ci aplikacji oraz komfortu pracy u»ytkownika (rys. 7.27).
Scalenie zasobów poskutkowaªo redukcj¡ liczby »¡da« do 18 komunikatów. Miniaturyzacja plików tekstowych, kompresja plików gracznych oraz pozbycie si¦ zb¦dnych metadanych
przeªo»yªo si¦ z kolei na czterokrotne zmniejszenie wielko±ci transferu do 140 kB. Natomiast
przeniesienie skryptów na dóª strony wyeliminowaªo konieczno±¢ oczekiwania na ich zaªadowanie przed innymi zasobami, dzi¦ki czemu czas ªadowania strony zostaª zredukowany do 1.94 s.
83
Rysunek 7.26: Brak optymalizacji galerii obrazów.
Rysunek 7.27: Optymalizacja galerii obrazów.
84
7.2.3 Optymalizacja wyszukiwarki
Za wzorcowy model wyszukiwarki przyj¦to serwis Yahoo i na jej podstawie zbudowano przykªadow¡ stron¦ na potrzeby testów (rys. 7.28). Witryna tego typu cz¦sto wykorzystywana jest
jako strona gªówna w przegl¡darce, dlatego czas jej zaªadowania musi by¢ jak najmniejszy.
Wyszukiwarki charakteryzuj¡ si¦ prostot¡ wygl¡du i minimalistycznym interfejsem u»ytkownika, dlatego te» liczba obrazów, skryptów i styli wystepuj¡cych w obr¦bie witryny jest
znikoma. Z drugiej strony obci¡»enie serwera oraz liczba u»ytkowników korzystaj¡cych z wyszukiwarki jest najwi¦ksze ze wszystkich analizowanych aplikacji sieciowych. Zakªada si¦, »e
przykªadowy serwis zostaª zoptymalizowany po stronie serwera, natomiast usprawnienia wymaga struktura strony i sposób doª¡czania zasobów zewn¦trznych.
Rysunek 7.28: Wzorcowa wyszukiwarka
Yahoo.com.
W efekcie optymalizacja dotyczy gªównie modykacji zasobów w celu zminimalizowania
liczby »¡da« oraz opó¹nienia, tak aby wyszukiwarka ªadowaªa si¦ jak najszybciej:
•
przygotowanie map obrazów dla wspólnie wystepuj¡cych plików gracznych,
•
osadzenie pojedynczo wystepuj¡cych obrazów w kodzie HTML,
•
miniaturyzacja skryptów i arkuszy styli,
•
osadzenie zawarto±ci skryptów i arkuszy styli w kodzie HTML.
Pocz¡tkowo uruchomienie wyszukiwarki w przegl¡darce obejmowaªo realizacj¦ 16 »¡da«,
które trwaªy w sumie 4.22 s i wymagaªy pobrania 111 kB danych (rys. 7.29). Po uwzgl¦dnieniu
proponowanych usprawnie« wy±wietlenie strony generowaªo 4 »¡dania, wymagaªo oczekiwania
jedynie 1.12 s i przesªania 125 kB (rys. 7.30).
Jak mo»na zauwa»y¢, stworzenie map obrazów, miniaturyzacja zasobów oraz osadzenie
ich w kodzie strony pozwoliªo czterokrotnie zredukowa¢ liczb¦ »¡da«. Odbyªo si¦ to kosztem
skuteczno±ci mechanizmu kompresji gzip oraz pami¦ci podr¦cznej, jako »e wielko±¢ transferu
wzrosªa a» o 20 kB. Istotny jest jednak fakt, »e udaªo si¦ trzykrotnie zmniejszy¢ opó¹nienie
niemal do optymalnej granicy, co jest kluczowym wyznacznikiem zadowolenia i komfortu pracy
tysi¦cy u»ytkowników korzystaj¡cych z wyszukiwarki.
85
Rysunek 7.29: Brak optymalizacji wyszukiwarki.
Rysunek 7.30: Optymalizacja wyszukiwarki.
Porównanie
Oprócz analizy skuteczno±ci technik optymalizacyjnych stosowanych w odosobnieniu, eksperyment przedstawiª równie» sposób kompleksowego wdra»ania tych metod. Za pomoc¡ zbudowanego modelu statystycznego skonstruowano kilka przykªadowych stron powszechnie wyst¦puj¡cych w Internecie (portal informacyjny, galeria obrazów, wyszukiwarka sieciowa) [57].
Nast¦pnie okre±lono charakterystyk¦ i ±rodowisko dziaªania tych serwisów, na ich podstawie wyselekcjonowano odpowiednio uargumentowane techniki optymalizacyjne, które w efekcie przyczyniªy si¦ do poprawy wydajno±ci dziaªania protokoªu (tab. 7.4). Ponownie naskuteczniejszymi okazaªy si¦ metody redukcji rozmiaru transferu i odlegªo±ci geogracznej (kompresja danych, system CDN), w dalszej kolejno±ci byªy to sposoby zmniejszenia liczby »¡da«
(scalanie i osadzanie zasobów w kodzie strony).
Typ strony
Przed
Po
Przyspieszenie
Portal informacyjny
4.98 s
1.64 s
67.07 %
Galeria obrazów
4.80 s
1.94 s
59.58 %
Wyszukiwarka
4.22 s
1.18 s
72.04 %
Tablica 7.4: Porównanie skuteczno±ci optymalizacji przykªadowych stron.
Badania potwierdziªy intuicyjne przypuszczenie, »e usprawnienia wydajno±ci powinny by¢
wdra»anie zale»nie od budowy strony, jej przeznaczenia i charakterystyki wykorzystywanych
zasobów. Zastosowanie nieprawidªowych technik mo»e mie¢ odwrotny skutek do po»¡danego,
dlatego nie nale»y ich wykorzystywa¢ bez dogª¦bnej analizy optymalizowanej strony.
Wszelkie ulepszenia warto równie» wprowadza¢ od pocz¡tku tworzenia witryny, kiedy to
koszt ich wdro»enia jest niewielki. Nie zawsze jednak mo»liwa jest konguracja wszystkich
elementów ±rodowiska protokoªu HTTP przykªadowo ze wzgl¦du na przestarzaªe klienty,
brak dost¦pu do serwera, poleganie na zewn¦trznych bibliotekach JavaScript.
86
Rozdziaª 8
Przyszªo±¢ protokoªu HTTP
W toku ewolucji protokoªu HTTP na przestrzeni lat powstaªo kilka jego wersji:
•
HTTP/0.9
Prototyp o wielu wadach projektowych, sªu»¡cy do pobierania doku-
mentów hipertekstowych. Obsªuguje jedynie metod¦ GET, nie dostarczaj¡c wsparcia
dla nagªówków, numerów wersji i typów danych, szybko zast¡piony przez HTTP/1.0.
•
HTTP/1.0 Powszechnie wdro»ona wersja niweluj¡ca ubytki poprzedniego wydania.
Rozszerzyªa zbiór metod dost¦pu oraz wzbogaciªa funkcjonalno±¢ o obsªug¦ multimediów
i formularzy, co przyczyniªo si¦ do wzrostu popularno±ci projektu WWW [10].
•
HTTP/1.0+ W odpowiedzi na dynamiczny rozwój Internetu wiele przegl¡darek oraz
serwerów wprowadziªo nieocjalne rozszerzenia obsªugi poª¡cze«
keep-alive, wirtualnych
serwerów i w¦zªów po±rednich, które przyj¦ªy si¦ jako standardowe rozwi¡zania.
•
HTTP/1.1
Wydanie to miaªo na celu poprawienie architektury protokoªu, specy-
kacj¦ semantyki metod dost¦pu, optymalizacj¦ wydajno±ci, usuni¦cie wadliwej funkcjonalno±ci i dostarczenie wsparcia dla upowszechniaj¡cych si¦ aplikacji sieciowych [25].
Aktualna wersja HTTP/1.1 wspiera ±ledzenie wersji dokumentów, ró»ne metody wysyªania
danych, obsªug¦ wielu j¦zyków, pami¦¢ podr¦czn¡, zakresowy dost¦p do zasobów. Pomimo
tych udoskonale«, istnieje kilka problemów zwi¡zanych z architektur¡ protokoªu:
•
Zªo»ono±¢ Implementacja skomplikowanych aplikacji HTTP cz¦sto wymaga dodatkowego oprogramowania mechanizmów protokoªu (obsªuga transakcji, poª¡czenia trwaªe,
pami¦¢ podr¦czna).
•
Rozszerzalno±¢
Inkrementalne wzbogacenie funkcjonalno±ci protokoªu jest trudne,
gdy» nie przewidziano takiego mechanizmu. Ka»da modykacja mo»e prowadzi¢ do niekompatybilno±ci oraz dezaktualizacji wielu istniej¡cych aplikacji i systemów.
•
Wydajno±¢
Wiele problemów wydajno±ciowych protokoªu pogª¦bia si¦ z powodu
stopniowego upowszechniania si¦ technologii bezprzewodowych o wysokim opó¹nieniu
i niskiej przepustowo±ci.
•
Sprz¦»enie warstwy transportowej Implementacje HTTP bazuj¡ najcz¦±ciej na stosie TCP/IP, którego wykorzystanie dla systemów wbudowanych i sieci bezprzewodowych
jest suboptymalne. W obliczu rosn¡cego zapotrzebowania na uniwersaln¡ platform¦ komunikacyjn¡, potrzebne jest wsparcie dla innych protokoªów warstwy transportowej [2].
87
8.1
HTTP-NG
W toku rozwoju HTTP jego zastosowania przekroczyªy pierwotne zaªo»enia projektowe, dlatego konieczne byªo zaproponowanie architektury nast¦pnej generacji. W 1997 r. przy udziale
konsorcjum W3C narodziªa si¦ idea HTTP-NG (ang.
HTTP Next Generation ), która wkrótce
potem zostaªa porzucona, jednak wyznaczyªa pewien kierunek dla przyszªo±ci protokoªu.
8.1.1 Modularyzacja
W celu zapewnienia modularyzacji i separacji wspóªzale»nych mechanizmów protokoªu (zarz¡dzanie poª¡czeniami, obsªuga komunikatów, metody dost¦pu), zaproponowano trójwarstwowy
podziaª funkcjonalno±ci (rys. 8.1).
Rysunek 8.1: Izolacja funkcjonalno±ci protokoªu w postaci warstw [34].
Warstwa transportu komunikatów
Warstwa transportu komunikatów (ang.
message transport layer ) dostarcza interfejs pozwala-
j¡cy na wymian¦ wiadomo±ci bez wzgl¦du na obsªugiwany stos sieciowy. Moduª ten odpowiada
za wydajn¡ transmisj¦ komunikatów, dokonuj¡c nast¦puj¡cych optymalizacji:
batch ),
•
redukcja opó¹nie« przez poª¡czenia potokowe i przetwarzanie wsadowe (ang.
•
zapobieganie przestojom transmisji poprzez multipleksowanie strumieni komunikatów,
•
ªatwe wyznaczanie granic komunikatów poprzez wydajny mechanizm segmentacji.
Warstwa wywoªa« zdalnych
Warstwa wywoªa« zdalnych (ang.
remote invocation layer )
dostarcza generyczny mechanizm
typu »¡danie-odpowied¹, pozwalaj¡cy klientowi dokonywa¢ zdalnych operacji na zasobach
po stronie serwera. Moduª ten abstrahuje od implementacji i semantyki poszczególnych operacji, eksponuje jedynie odpowiedni interfejs. Obecnie istnieje wiele kompatybilnych standardów
wywoªa« zdalnych (np. CORBA, DCOM, Java RMI).
Warstwa aplikacji
Warstwa aplikacji (ang.
web application layer ) deniuje semantyk¦ oraz logik¦ protokoªu. Pre-
zentuje ona wspólne usªugi oraz mechanizmy dla ró»norodnych, potencjalnie wspóªistniej¡cych
aplikacji. Jej przeznaczeniem jest dostarczanie funkcjonalno±ci HTTP/1.1 oraz udost¦pnianie
interfejsu dla przyszªych rozszerze« [44].
88
8.1.2 Ulepszenie
Po dokonaniu podziaªu protokoªu HTTP na moduªy, mogªy one by¢ niezale»nie modykowane
w celu zwi¦kszenia ich wydajno±ci i wzbogacenia funcjonalno±ci. Zdecydowano si¦ na optymalizacj¦ ró»nych wªa±ciwo±ci protokoªu przy pomocy nast¦puj¡cych koncepcji:
Obiekty rozproszone
distributed objects ). Podej±cie to zapewnia rozszerzalno±¢ i elastyczno±¢ systemu, jednak cechuje
Architektura HTTP-NG w du»ej mierze oparta jest na idei obiektów rozproszonych (ang.
si¦ stosunkowo du»ym nakªadem implementacyjnym oraz znacznym stopniem zªo»ono±ci [43].
WebMUX
Koncepcja WebMUX deniuje wydajny mechanizm obsªugi komunikatów, które mog¡ by¢
jednocze±nie transportowane poprzez multipleksowane poª¡czenie TCP. Dzi¦ki temu, osobne
strumienie komunikatów transmitowanych z ró»n¡ cz¦stotliwo±ci¡ mog¡ zosta¢ podzielone
i rozprowadzone w obr¦bie jednego lub kilku poª¡cze« (rys. 8.2). Dodatkowo mechanizm ten
redukuje nasycenie sieci za po±rednictwem anonsowania gotowo±ci obsªugi danych przez odbiorc¦, analogicznie do koncepcji sterowania przepªywem w warstwie transportowej.
Rysunek 8.2: Schemat multipleksowania komunikatów [34].
Binary Wire
Specykacja HTTP-NG okre±la typy obiektów oraz dokonuje skojarzenia metod dost¦pu
do ka»dego z nich. Obiekty identykowane s¡ poprzez adresy URI, zatem charakterystyki
i metody dost¦pu mog¡ by¢ zró»nicowane na poziomie zasobów, a nie statycznie w obr¦bie caªego serwera, jak w przypadku HTTP/1.1. Wydajny i rozszerzalny mechanizm
Wire
Binary
deniuje sposób obsªugi zdalnych operacji oraz odpowiada za transport komunikatów
za po±rednictwem stanowego poª¡czenia [38].
Komunikat »¡dania okre±la typ operacji i obiekt docelowy, podczas gdy komunikat odpowiedzi status operacji i numer kontrolny, a ka»dy z nich mo»e by¢ równie» no±nikiem
opcjonalnych danych. Numer kontrolny identykuje odpowiadaj¡ce »¡danie, co umo»liwia
wymian¦ komunikatów w dowolnej kolejno±ci, nie tylko w sekwencji »¡danie-odpowied¹. Ponadto protokóª wprowadza kilka wewn¦trznych wiadomo±ci steruj¡cych wykorzystywanych
do zwi¦kszenia wydajno±ci i niezawodno±ci poª¡czenia.
89
8.2
HTTP/2.0
Pomimo porzucenia koncepcji modularnego protokoªu HTTP-NG, obecnie trwaj¡ prace nad
kolejn¡ wersj¡ HTTP. Staªo si¦ to za spraw¡ projektu SPDY zainicjowanego przez Google
w 2009 r., który miaª na celu zmniejszenie czasu ªadowania stron internetowych poprzez eliminacj¦ wydajno±ciowych ogranicze« protokoªu. W toku pomy±lnego rozwoju idea przerodziªa
si¦ w zapowied¹ ocjalnego standardu HTTP/2.0 [7].
8.2.1 Architektura
Implementacja HTTP cechuje si¦ prostot¡, jednak»e odbywa si¦ to kosztem wydajno±ci, co
jest gªównym obszarem optymalizacji na potrzeby kolejnej wersji protokoªu, takich jak [8]:
•
redukcja opó¹nienia i nasycenia sieci,
•
zachowanie semantyki HTTP/1.1 na poziomie aplikacyjnym,
•
zdeniowanie schematu interakcji z poprzednimi wersjami protokoªu,
•
dostarczenie mechanizmu rozszerze« i wytycznych jego u»ytkowania,
•
minimalizacja zmian istniej¡cej infrastruktury oraz zasobów sieciowych.
W kontek±cie zaªo»e« projektowych proponowanymi usprawnieniami jest multipleksowanie, priorytetyzacja komunikatów, kompresja pól nagªówka, obsªuga bª¦dów, wspomaganie
aktualizacji i mechanizm sterowania przepªywem. Nowa wersja protokoªu nie modykuje semantyki HTTP, natomiast wprowadza niekompatybiln¡ wstecznie warstw¦ komunikacji.
8.2.2 Warstwa komunikacji
Podstaw¡ wszystkich optymalizacji wydajno±ciowych HTTP/2.0 jest warstwa transmisji binarnych ramek (ang.
binary framing layer )
deniuj¡ca sposób w jaki protokóª konstruuje
i przesyªa komunikaty (rys. 8.3).
Rysunek 8.3: Warstwa transmisji binarnych ramek [34].
Warstwa ta operuje pomi¦dzy interfejsem gniazd sieciowych a interfejsem aplikacyjnym
HTTP. W ten sposób semantyka metod dost¦pu i pól nagªówka pozostaje nienaruszona, podczas gdy zmianie ulega kodowanie i enkapsulacja transmitowanych danych. W przeciwie«stwie
90
do HTTP/1.x format komunikacji nie jest czysto tekstowy, lecz oparty o podziaª na komunikaty i ramki kodowane w formie binarnej. Konsekwencj¡ tego rozwi¡zania jest niekompatybilno±¢ z istniej¡cymi wersjami protokoªu i konieczno±¢ negocjacji sposobu transmisji pomi¦dzy
klientem i serwerem. Ponadto specykacja protokoªu wprowadza nast¦puj¡c¡ terminologi¦:
Sesja
Odpowiednik poª¡czenia.
Strumie«
Wirtualny, dwukierunkowy kanaª transportuj¡cy komunikaty.
Komunikat
Ramka
Logiczny komunikat HTTP skªadaj¡cy si¦ z sekwencji ramek.
Najmniejsza jednostka komunikacji przenosz¡ca informacje (nagªówki, dane).
Komunikacja mi¦dzy klientem a serwerem odbywa si¦ w obr¦bie sesji skªadaj¡cej si¦ z dwukierunkowych strumieni. Te z kolei przenosz¡ komunikaty zbudowane z ramek identykowanych numerem strumienia, dzi¦ki czemu mog¡ by¢ przeplatane w dowolnej kolejno±ci (rys. 8.4).
Rysunek 8.4: Terminologia protokoªu HTTP/2.0 [34].
8.2.3 Multipleksowanie komunikatów
W przypadku HTTP/1.x, realizacja równolegªych »¡da« wymaga zestawienia odpowiedniej
liczby poª¡cze« TCP. Warstwa komunikacyjna eliminuje t¦ niedogodno±¢ za pomoc¡ multipleksowania, która polega na podziale komunikatów na ramki, ich transmisji w dowolnej
kolejno±ci oraz rekonstrukcji do pierwotnej formy (rys. 8.5).
Rysunek 8.5: Multipleksowanie komunikatów w obr¦bie sesji [34].
91
Mechanizm multipleksowania jest znacznym usprawnieniem jego celem jest:
•
wydajna utylizacja pojedynczej sesji,
•
nieblokuj¡ce i wspóªbie»ne przeplatanie komunikatów,
•
ograniczenie opó¹nienia i zu»ycia zasobów,
•
eliminacja optymalizacji w kodzie aplikacyjnym.
8.2.4 Priorytetyzacja komunikatów
Jako »e komunikat jest dzielony na niezale»ne ramki, sposób ich przeplatania i dostarczania
w obr¦bie sesji mo»e zosta¢ zoptymalizowany pod k¡tem wydajno±ci aplikacji HTTP. W odpowiedzi dostarczono mechanizm priorytetyzacji, dzi¦ki czemu klient lub serwer ma mo»liwo±¢
stosowania ró»nych strategii przetwarzania strumieni, komunikatów i ramek w po»¡danej kolejno±ci. Priorytetyzacja jest szczególnie przydatna w kontek±cie dziaªania przegl¡darek internetowych, jako »e w procesie renderowania strony zasoby cechuj¡ si¦ ró»nymi priorytetami
zale»nie od ich typu i rozmieszczenia w dokumencie (rozdz. 2).
8.2.5 Pojedyncze poª¡czenie
Obsªuga przez serwer du»ej liczby wspóªbie»nych poª¡cze« stanowi problem w kontek±cie
skalowalno±ci, zwªaszcza »e wi¦kszo±¢ transakcji HTTP ma charakter impulsowy, a wykorzystywany protokóª TCP zoptymalizowany jest pod k¡tem czasochªonnych transferów danych
o du»ych rozmiarach. Jednak dzi¦ki multipleksowaniu wszystkie poª¡czenia HTTP/2.0 s¡
trwaªe i mog¡ by¢ wspóªdzielone przez klienta, co przynosi nast¦puj¡ce korzy±ci:
•
zmniejszenie nasycenia sieci i zu»ycia zasobów,
•
spójna priorytyzacja dla wszystkich strumieni,
•
redukcja opó¹nienia i narzutu operacyjnego,
•
efektywno±¢ algorytmu
slow start.
8.2.6 Sterowanie przepªywem
Multipleksowanie wielu strumieni w obr¦bie sesji wprowadza zjawisko konkurencji o przepustowo±¢ sieci. Idea priorytetyzacji pozwala na determinacj¦ wzgl¦dnego porz¡dku dostarczania
komunikatów, jednak jest niewystarczaj¡ca do kontrolowania przydziaªu zasobów do poszczególnych strumieni i sesji. Z tego wzgl¦du dostarczono mechanizm sterowania przepªywem,
analogiczny do rozwi¡zania znanego z protokoªu TCP, które bazuje na rozgªaszaniu przez
odbiorc¦ rozmiaru okna danych gotowych do otrzymania i przetworzenia.
8.2.7 Transfer wyprzedzaj¡cy
Kolejnym udogodnieniem jest mo»liwo±¢ wysªania kilku odpowiedzi serwera na pojedyncze
»¡danie klienta (ang.
push ), co pozwala na wyprzedzaj¡ce dostarczenie dodatkowych zasobów
(rys. 8.6). W praktyce przyczynia si¦ to do znacznej redukcji opó¹nienia podczas przegl¡dania
stron internetowych, poniewa» »¡dany dokument HTML transmitowany jest wraz z zasobami
zewn¦trznymi w obr¦bie tego samego systemu plików. Symetryczny efekt osi¡galny jest w wersji HTTP/1.1 na poziomie aplikacji poprzez osadzenie zawarto±ci zasobu w dokumencie, przez
co jest bezpo±rednio dostarczany do klienta bez konieczno±ci realizacji dodatkowego »¡dania.
92
Rysunek 8.6: Obiecanie przesªania powi¡zanych zasobów przez serwer [34].
8.2.8 Kompresja nagªówka
Ka»da transakcja wymaga doª¡czenia nagªówka opisuj¡cego przesyªany zasób i jego wªa±ciwo±ci. W wersji HTTP/1.x jest on przesyªany w formacie tekstowym, stanowi¡c narzut rz¦du
kilkuset bajtów. Nowy protokóª zmniejsza to obci¡»enie poprzez kodowowanie metadanych
w postaci przyrostowej. Rozwi¡zanie polega na zapisywaniu przesyªanych nagªówków do tabel
aktualizowanych przez obie strony komunikacji na czas trwania sesji, co eliminuje konieczno±¢
transferu redundatnych informacji w nast¦puj¡cych po sobie komunikatach (rys. 8.7).
Rysunek 8.7: Przyrostowe kodowanie pól nagªówka [34].
Wdro»enie
Przewiduje si¦, »e aktualizacja protokoªu HTTP do wersji 2.0 b¦dzie procesem dªugotrwaªym,
poniewa» wymaga zmian po stronie serwera, klienta oraz powszechnie u»ywanych bibliotek
sieciowych. Szcz¦±liwie, wi¦kszo±¢ nowoczesnych przegl¡darek wykorzystuje mechanizm aktualizacji w tle, który pozwala na szybkie i przezroczyste wdro»enie nowego protokoªu dla szerokiego grona u»ytkowników. Natomiast serwery b¦d¡ prawdopodobnie przez dªu»szy czas
obsªugiwa¢ HTTP w wersjach 1.x i 2.0 w celu zapewnienia kompatybilno±ci wstecznej. Wi¡»e
si¦ to z konieczno±ci¡ wprowadzenia mechanizmu negocjacji sposobu komunikacji mi¦dzy stronami podczas zestawiania poª¡czenia.
93
Podsumowanie
Opisany w pracy protokóª HTTP stanowi podstawowy kanaª komunikacyjny pozwalaj¡cy
na jednolity i ustandaryzowany dost¦p do zasobów Internetu, zgodnie z zaªo»eniami pionierskiego projektu
World Wide Web.
Protokóª funkcjonuje w warstwie aplikacji na zasadzie
wymiany transakcji typu »adanie-odpowied¹, powszechnie stosowany jest w ró»norodnych ±rodowiskach sieciowych pocz¡wszy od szerokopasmowych sieci korporacyjnych, na ª¡czach
radiowych maªej mocy sko«czywszy.
Standard przez dekady ulegaª modykacjom dopasowuj¡c si¦ do zmian zachodz¡cych w topologii oraz rozmiarze globalnej sieci, a tak»e uwzgl¦dniaj¡c ewolucj¦ zasobów internetowych
przeksztaªacaj¡cych si¦ z prostych, statycznych stron do rozbudowanych i interaktywnych
aplikacji. Z tego wzgl¦du stopniowo wprowadzano usprawnienia i optymalizacje protokoªu.
Pierwotne wersje HTTP/0.9-1.0 stanowiªy nieskomplikowany protokóª wymiany dokumentów hipertekstowych. Obsªugiwaªy one »¡dania w sposób niewydajny, tworz¡c osobne poª¡czenia dla ka»dej operacji. Nie wspieraªy równie» hierarchicznych w¦zªów proxy, pami¦ci
podr¦cznej oraz serwerów wirtualnych. Spowodowaªo to konieczno±¢ wprowadzenia kolejnej
wersji HTTP/1.1, która dostarczyªa mechanizm poª¡cze« trwaªych, koncepcj¦ potokowania,
mo»liwo±¢ kompresji zasobów i transmisji fragmentów danych.
Ponadto na przestrzeni lat opracowano sposoby optymalizacji ±rodowiska pracy protokoªu
od strony klienta, serwera, a tak»e samej strony internetowej. Zrozumienie zasady dziaªania
tych technik oraz przemy±lane zastosowanie pozwala na dalsz¡ popraw¦ wydajno±ci HTTP, co
zaprezentowano na podstawie przeprowadzonego eksperymentu. Jego celem byªa werykacja
oraz ocena skuteczno±ci opisanych metod optymalizacyjnych. Analiza opieraªa si¦ na porównaniu widoków kaskady zasobów wygenerowanych przed i po wdro»eniu tych rozwi¡za«.
Punktem wyj±cia dla eksperymentu byª statystyczny model strony internetowej, który zostaª zbudowany za pomoc¡ zaimplementowanej aplikacji robota internetowego. Zrealizowany
program posªu»yª do przeprowadzenia procesu eksploracji sieci, czyli odwiedzenia wyspecykowanego zbioru popularnych witryn oraz obliczenie u±rednionej charakterystyki strony internetowej. Tak skonstruowany model wykorzystano podczas bada« do przygotowania przykªadowych stron, które zostaªy poddane wybranym technikom optymalizacyjnym. Ich efektywno±¢
zobrazowano za pomoc¡ kaskadowego widoku zasobów, specykuj¡cych liczb¦ »¡da«, wielko±¢
transferu oraz zale»no±ci czasowe przesyªanych obiektów.
Dodatkowo zilustrowano alternatywn¡ koncepcj¦ protokoªu, zwi¡zan¡ z zaniechanym projektem HTTP-NG. Zarysowano wizj¦ dalszego rozwoju standardu w kontek±cie nowego usprawnienia o nazwie SPDY, stanowi¡cego baz¦ dla przyszªej wersji HTTP/2.0, która prawdopodobnie zostanie wprowadzona do u»ytku w przeci¡gu kilku nast¦pnych lat.
94
Tablice
Nagªówki
Nagªówek »¡dania
Nazwa pola
Opis
Accept
Akceptowalne typy danych.
Przykªad
text/plain, image/jpg
Accept-Charset
Akceptowalne kodowanie znaków.
utf-8, iso-8859-1
Accept-Encoding
Akceptowalne sposoby kompresji.
gzip, deate, compress
Accept-Language
Akceptowalne j¦zyki.
en-US
Accept-Datetime
Akceptowalny znacznik czasowy zasobu.
Fri, 8 June 2012 12:13:00 GMT
Authorization
Dane uwierzytelniaj¡ce.
Basic QWxhZGuIHc2FtZQ==
Cookie
Ciasteczko wysªane przez serwer.
$Version=1; Skin=new;
From
Adres e-mail klienta.
[email protected]
User-Agent
Opis aplikacji klienckiej.
Mozilla/5.0 (X11; Linux i686)
Host
Identykacja serwera.
www.w3.org
Referer
Adres URL pocz¡tkuj¡cy »¡danie.
http://www.w3.org/about.html
If-Match
Warunek zgodno±ci znacznika ETag.
737060cd8c284d8af7ad3082f209
If-None-Match
Warunek niezgodno±ci znacznika ETag.
737060cd8c284d8af7ad3082f209
If-Modied-Since
Warunek modykacji wzgl¦dem daty.
Fri, 8 June 2012 12:13:00 GMT
If-Unmodied-Since
Warunek staªo±ci wzgl¦dem daty.
Fri, 8 June 2012 12:13:00 GMT
If-Range
Warunek zgodno±ci znacznika ETag (»¡da-
737060cd8c284d8af7ad3082f209
nie fragmentu zasobu).
Nagªówek odpowiedzi
Nazwa pola
Opis
Server
Nazwa i wersja serwera.
Apache/2.4.1 (Unix)
Location
Przekierowanie do innego zasobu.
http://www.w3.org/news.html
Set-Cookie
Denicja ciasteczka.
UserId=John; Max-Age=3600
Refresh
Przekierowanie do innego zasobu.
5; url=http://www.w3.org
Retry-After
Ponowienie »¡dania w okre±lonym czasie.
120
WWW-Authenticate
Schemat autoryzacji dost¦pu.
Basic
95
Przykªad
Nagªówek ogólny
Nazwa pola
Opis
Connection
Preferowany typ poª¡czenia.
keep-alive
Date
Data i czas wysªania komunikatu.
Fri, 8 June 2012 12:13:00 GMT
Pragma
Wytyczne dla uczestników komunikacji.
no-cache
Cache-Control
Wytyczne dla pami¦ci podr¦cznej.
no-cache
Trailer
Pola zawarte na ko«cu komunikatu.
Max-Forwards
Transfer-Encoding
Sposób kodowania transmisji.
chunked
Upgrade
›¡danie zmiany wersji protokoªu.
SHTTP/1.3
Via
Lista w¦zªów proxy na ±cie»ce komunikacji.
1.1 example.com (Apache/1.1)
Warning
Potencjalny problem zwi¡zany z danymi.
199 Miscellaneous warning
Nazwa pola
Opis
Allow
Lista obsªugiwanych metod.
GET, HEAD
Expires
Termin wa»no±ci komunikatu.
Fri, 8 June 2012 12:13:00 GMT
Last-Modied
Ostatnia data modykacji zasobu.
Fri, 8 June 2012 12:13:00 GMT
Content-Encoding
Sposób kodowania danych.
gzip
Content-Language
J¦zyk danych.
pl
Content-Length
Rozmiar danych w oktetach.
512
Content-Location
Alternatywna lokalizacja danych.
/index.htm
Content-MD5
Skrót MD5 danych.
Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Disposition
Sugestia obsªugi danych.
attachment; lename=cat.png
Content-Range
Pozycja danych w obr¦bie zasobu.
bytes 21010-47021/47022
Content-Type
Typ MIME danych.
text/html
ETag
Znacznik zasobu.
737060cd8c284d8af7ad3082f209
Link
Zwi¡zek z innymi zasobem.
</feed>; rel=alternate
Nagªówek danych
96
Przykªad
Przykªad
Statusy odpowiedzi
Statusy informacyjne
Znaczenie
Kod Status
100
Continue
Kontynuacja, pro±ba o dalsze wysyªanie zapytania.
101
Switching Protocols
Zmiana protokoªu.
110
Connection Timed Out
Przekroczono limit czasu poª¡czenia.
111
Connection Refused
Serwer odrzuciª poª¡czenie.
Statusy powodzenia
Znaczenie
Kod Status
200
OK
›¡danie przetworzono, serwer zwraca zawarto±¢ zasobu.
201
Created
Wysªany dokument zostaª zapisany na serwerze.
202
Accepted
Zapytanie przyj¦te, lecz jeszcze nie przetworzone.
203
Non-Authoritative Information
Zwrócona informacja pochodzi z innego serwera.
204
No Content
Serwer nie zwraca zawarto±ci zasobu.
205
Reset Content
Klient powinien przywróci¢ pierwotny wygl¡d dokumentu.
206
Partial Content
Serwer zwraca cz¦±ciow¡ zawarto±¢ zasobu.
Kod Status
Statusy przekierowania
Znaczenie
300
Multiple Choices
Istnieje wi¦cej ni» jeden sposób obsªu»enia »¡dania.
301
Moved Permanently
Zasób zostaª przeniesiony pod inny adres URL.
302
Found
Zasób zostaª chwilowo przeniesiony pod inny adres URL.
303
See Other
Odpowied¹ znajduje si¦ pod innym adresem URL.
304
Not Modied
Zawarto±¢ nie ulegªa zmianie w kontek±cie warunku klienta.
305
Use Proxy
Zasób jest dost¦pny przez wskazany serwer proxy.
307
Temporary Redirect
Tymczasowe przekierowanie pod inny adres URL.
310
Too Many Redirects
Zbyt wiele przekierowa«.
97
Statusy bª¦dów klienta
Znaczenie
Kod Status
400
Bad Request
Nieprawidªowe »¡danie z powodu bª¦dnej skªadni.
401
Unauthorized
Nieautoryzowany dost¦p, konieczno±¢ uwierzytelnienia.
402
Payment Required
Dost¦p do zasobu wymaga opªaty.
403
Forbidden
Dost¦p do zasobu jest zabroniony.
404
Not Found
Zasób nie zostaª odnaleziony wedªug adresu URL.
405
Method Not Allowed
Wykonano niedozwolon¡ metod¦ dost¦pu do zasobu.
406
Not Acceptable
Typ zasobu nie jest obsªugiwany przez klienta.
407
Proxy Authentication Required
Wymagane uwierzytelnienie do serwera proxy
408
Request Timeout
Przekroczenie limitu czasu oczekiwania na »¡danie klienta.
409
Conict
Wyst¡pienie koniktu z obecnym statusem zasobu.
410
Gone
Zasób nie dost¦pny i nieznany jest nowy adres URL.
411
Length Required
Wymóg wskazania rozmiaru danych przez klienta.
412
Precondition Failed
Warunek wst¦pny nie mo»e by¢ speªniony przez serwer.
413
Request Entity Too Large
Dªugo±¢ »¡dania jest zbyt dªuga z perspektywy serwera.
414
Request-URI Too Long
Dªugo±¢ adresu URL jest zbyt dªugi z perspektywy serwera.
415
Unsupported Media Type
Nieznany sposób »¡dania dla serwera.
416
Requested Range Not Satisable
Niemo»no±¢ zwrócenia wskazanego zakresu bajtów.
417
Expectation Failed
Brak zawarto±ci zasobu oczekiwanej przez klienta.
Kod Status
Statusy bª¦dów serwera
Znaczenie
500
Internal Server Error
Wewn¦trzny bª¡d serwera.
501
Not Implemented
Brak wymaganej funkcjonalno±ci serwera.
502
Bad Gateway
Serwer po±redni nie jest w stanie zrealizowa¢ »¡dania.
503
Service Unavailable
Niedost¦pno±¢ serwera.
504
Gateway Timeout
Przekroczono limit czasu serwera po±redniego.
505
HTTP Version Not Supported
Brak obsªugi wskazanej wersji protokoªu HTTP.
98
Sªownik poj¦¢
WWW
(ang.
World Wide Web )
HTML
(ang.
Hypertext Markup Language )
UDP
(ang.
SSDP
ISP
CSS
(ang.
JSON
protokóª pakietów warstwy transportowej
Domain Name System )
Cascading Style Sheets )
(ang.
system tªumaczenia adresów sieciowych
j¦zyk opisu wygl¡du stron internetowych
Javascript Object Notation )
tekstowy format wymiany danych
(ang.
Extensible Markup Language )
CDN
(ang.
Content Delivery Network )
(ang.
Internet Protocol )
(ang.
Round Trip Ttime )
TCP
(ang.
Transport Control Protocol )
(ang.
j¦zyk reprezentacji ustrukturalizowanych danych
system serwerów wysokiej dost¦pno±ci
protokóª komunikacyjny warstwy sieciowej
RTT
HTTP
standard budowy komunikatu
dostawca usªugi Internetu
XML
IP
protokóª do wykrywania urz¡dze«
Multipurpose Internet Mail Extensions )
Internet Service Provider )
(ang.
hipertekstowy j¦zyk znaczników
Simple Service Discovery Protocol )
(ang.
(ang.
DNS
User Datagram Protocol )
(ang.
MIME
usªuga internetowa dost¦pu do globalnej sieci
czas podró»y pakietów w obie strony
protokóª komunikacyjny warstwy transportowej
Hypertext Transfer Protocol )
protokóª dokumentów hipertekstowych
99
Zawarto±¢ pªyty CD
Zaª¡czona do pracy pªyta CD zawiera nast¦puj¡ce katalogi:
application
cz¦±¢ implementacyjna pracy
src
kod ¹ródªowy aplikacji
res
pliki konguracji i bazy danych
thesis
cz¦±¢ merytoryczna pracy
pdf
dokument w formacie
latex
pdf
dokument w formacie
tex
100
Bibliograa
[1] R. Armstrong, D. Freitag, T. Joachims, and T. Mitchell.
prentice for the World Wide Web.
[2] H. Balakrishnan, S. Seshan, E. Amir, and R. Katz.
Wireless Networks.
Improving TCP/IP Performance over
ACM Press, 1995.
[3] P. Baldi, P. Frasconi, and P. Smyth.
[4] D. Barr.
WebWatcher: A Learning Ap-
Carnegie Mellon University, 1995.
Modeling the Internet and the Web.
Common DNS Operational and Conguration Errors.
[5] A. Barto.
Reinforcement Learning: An Introduction.
[6] M. Belshe.
More Bandwidth Doesn't Matter (Much).
[7] M. Belshe and A. Langley.
Wiley, 2003.
RFC 1912, IETF, 1996.
MIT Press, 1998.
Google, 2010.
SPDY: An Experimental Protocol for a Faster Web.
Google,
2009.
[8] M. Belshe, R. Peon, M. Thomson, and A. Melnikov.
2.0.
Hypertext Transfer Protocol Version
IETF, 2013.
[9] T. Berners-Lee.
Universal Resource Identiers in WWW.
[10] T. Berners-Lee, R. Fielding, and H. Frystyk.
RFC 1630, IETF, 1994.
Hypertext Transfer Protocol HTTP/1.0.
RFC 1945, IETF, 1996.
[11] S. Brin and L. Page.
The Anatomy of a Large-scale Hypertextual Web Search Engine.
Computer Networks and ISDN Systems, 1998.
[12] J. Brun.
List of Spiders and Crawlers.
[13] R. Buyya and A. Vakali.
CrawlTrack, 2013.
Content Delivery Networks.
[14] C. Castillo and R. Baeza-Yates.
http://www.crawltrack.net.
Springer, 2008.
A New Model for Web Crawling.
University of Chile,
2002.
[15] S. Chakrabarti, M. Berg, and B. Dom.
Specic Web Resource Discovery.
[16] D. Connolly.
Focused Crawling: a New Approach to Topic-
ACM Press, 1999.
A Little History of the World Wide Web.
[17] T. Cormen, C. Leiserson, R. Rivest, and C. Stein.
W3C, 2000.
Introduction to Algorithms.
MIT Press,
2001.
[18] N. Craswell, F. Crimmins, D. Hawking, and A. Moat.
in Web Search.
Performance and Cost Tradeos
Australasian Database Conference, 2004.
101
[19] B. Davison.
Topical Locality in the Web.
[20] P. Deutsch.
GZIP File Format Specication Version 4.3.
ACM Press, 2000.
RFC 1952, IETF, 1996.
[21] M. Diligenti, F. Coetzee, S. Lawrence, C. Giles, and M Gori.
Context Graphs.
[22] L. Dusseault and J. Snell.
[23] B. Erb.
Focused Crawling Using
World Wide Web Conference, 2000.
PATCH Method for HTTP.
RFC 5789, IETF, 2010.
Concurrent Programming for Scalable Web Architectures.
[24] R. Fielding.
Ulm University, 2012.
Architectural Styles and the Design of Network-based Software Architectures.
University of California, 2000.
[25] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, and T. Berners-Lee.
Hypertext Transfer Protocol HTTP/1.1.
[26] D. Fisher.
Link Prefetching FAQ.
[27] D. Freed and N. Borenstein.
RFC 2616, IETF, 1999.
Mozilla, 2003.
https://developer.mozilla.org.
Multipurpose Internet Mail Extensions (MIME).
RFC 2045-
2049, IETF, 1996.
[28] H. Frystyk, J. Gettys, A. Baird-Smith, E. Prud'hommeaux, H. Wium, and C. Lilley.
Network Performance Eects of HTTP/1.1, CSS1, and PNG.
[29] E. Gamma, R. Helm, R. Johnson, and J. Vlissides.
Object-Oriented Software.
[30] H. Goei.
Design Patterns: Elements of Reusable
Addison-Wesley, 2000.
Debugging JavaScript and CSS Using Firebug.
[31] D. Gourley and B. Totty.
[32] J. Graessley.
W3C, 1997.
HTTP: The Denitive Guide.
Networking Best Practices.
University of California, 2010.
O'Reilly Media, 2002.
Apple, 2012.
[33] I. Grigorik.
Latency: The New Web Performance Bottleneck.
[34] I. Grigorik.
High Performance Browser Networking.
[35] A. Grosskurth and M. Godfrey.
Google, 2012.
O'Reilly Media, 2013.
A Reference Architecture for Web Browsers.
University
of Waterloo, 2005.
[36] J. Heidemann.
Performance Interactions Between P-HTTP and TCP Implementations.
ACM Press, 1997.
[37] V. Jacobson.
Congestion Avoidance and Control.
Computer Communication Review,
1988.
[38] B. Janssen.
Binary Wire Protocol for HTTP-NG.
[39] M. Koster.
Guidelines for Robot Writers.
[40] M. Koster.
A Standard for Robot Exclusion.
[41] D. Kristol and L. Montulli.
W3C, 1998.
W3C, 1993.
IETF, 1994.
HTTP State Management Mechanism.
RFC 2965, IETF,
2000.
[42] A. Krohn.
Why Is My Page Slow?
GTMetrix, 2011.
102
http://gtmetrix.com.
[43] D. Larner.
Migrating the Web toward Distributed Objects.
[44] D. Larner.
HTTP-NG Web Interfaces.
W3C, 1998.
Accessibility of Information on the Web.
[45] S. Lawrence and C. Giles.
[47] B. Liu.
ACM Press, 2000.
Digital Libraries and Autonomous Citation
[46] S. Lawrence, C. Giles, and K. Bollacker.
Indexing.
Xerox, 1996.
IEEE, 1999.
Web Data Mining.
[48] P. Lyman and H. Varian.
[49] L. Masinter.
Springer, 2007.
How Much Information?
University of California, 2003.
Hyper Text Coee Pot Control Protocol.
RFC 2324, IETF, 1998.
ARACHNID: Adaptive Retrieval Agents Choosing Heuristic Neighborhoods
for Information Discovery. University of California, 1997.
[50] F. Menczer.
[51] J. Mogul.
The Case for Persistent-Connection HTTP.
[52] M. Najork and A. Heydon.
[53] NetCraft.
High-Performance Web Crawling.
Web Server Survey.
[54] M. Nottingham.
2012.
Compaq, 2001.
http://www.netcraft.com.
Making HTTP Pipelining Usable on the Open Web.
[55] E. Nygren, R. Sitamaran, and J. Sun.
Performance Internet Applications.
[56] C. Olston and M. Najork.
[57] T. O'Reilly.
ACM Press, 1995.
IETF, 2011.
The Akamai Network: A Platform for High-
ACM Press, 2010.
Web Crawling.
Now, 2010.
Design Patterns and Business Models for the Next Generation of Software.
O'Reilly Media, 2005.
[58] V. Padmanabhan and J. Mogul.
Improving HTTP Latency.
ACM Press, 1994.
[59] D. Pariag, T. Brecht, A. Harji, P. Buhr, A. Shukla, and D. Cheriton.
Performance of Web Server Architectures.
Comparing the
ACM Press, 2007.
Proactor: An Object Behavioral Pattern for Demultiplexing and Dispatching Handlers for Asynchronous Events. Washington
[60] I. Pyarali, T. Harrison, D. Schmidt, and T. Jordan.
University, 1997.
[61] S. Ramachandran.
Web metrics: Size and Number of Resources.
[62] S. Russel and P. Norvig.
Google, 2010.
Articial Intelligence: A Modern Approach.
Prentice Hall, 2002.
Reactor: An Object Behavioral Pattern for Concurrent Event Demultiplexing
and Event Handler Dispatching. ACM Press, 1995.
[63] D. Schmidt.
[64] S. Seow.
Designing and Engineering Time.
[65] S. Souders.
High Performance Web Sites.
[66] S. Souders.
Even Faster Web Sites.
[67] S. Spero.
Pearson Education, 2008.
O'Reilly Media, 2007.
O'Reilly Media, 2009.
Analysis of HTTP Performance Problems.
103
W3C, 1994.
[68] StatCounter.
Browsers Worldwide Monthly.
[69] R. Stevens, B. Fenner, and A. Rudo.
Sockets Networking API.
2012.
http://www.statcounter.com.
Unix Network Programming, Volume 1: The
Addison-Wesley, 2003.
Mobile Applications Development Technologies Impact on Network Load and
Perceived Performance. Warsaw University of Technology, 2011.
[70] Z. Szl¦k.
[71] M. Welsh, D. Culler, and E. Brewer.
Scalable Internet Services.
[72] J. Wiebe.
SEDA: An Architecture for Well-Conditioned,
ACM Press, 2001.
State Space Search.
Pittsburgh University, 1997.
[73] A. Woodru, P. Aoki, E. Brewer, P. Gauthier, and L. Rowe.
ments from the World Wide Web.
An Investigation of Docu-
University of California, 1996.
104

Podobne dokumenty