Optymalizowanie obsługi treści

Nasze aplikacje internetowe stale się rozwijają, a ich zakres, ambicje i funkcjonalność są coraz większe – i to dobrze. Nieustanny rozwój sieci internetowej powoduje jednak inny trend: ilość danych pobieranych przez poszczególne aplikacje stale rośnie. Aby zapewnić wysoką skuteczność, musimy zoptymalizować dostarczanie każdego bajta.

Jak wygląda nowoczesna aplikacja internetowa? Archiwum HTTP może nam pomóc w odpowiedzi na to pytanie. Projekt śledzi,jak budowana jest sieć, okresowo indeksując najpopularniejsze witryny (ponad 300 tys. z listy Alexa Top 1M) oraz rejestrując i zbierając dane analityczne o liczbie zasobów, typach treści i innych metadanych dla każdej osobnej docelowej witryny.

Trendy w archiwum HTTP

50 centyl 75 centyl 90 centyl
HTML 13 KB 26 KB 54 KB
Obrazy 528 KB 1213 KB 2384 KB
JavaScript 207 KB 385 KB 587 KB
CSS 24 KB 53 KB 108 KB
Inne 282 KB 308 KB 353 KB
Łącznie 1054 KB 1985 KB 3486 KoB

Powyższe dane pokazują trend wzrostu liczby pobranych bajtów w przypadku popularnych miejsc w internecie w okresie od stycznia 2013 r. do stycznia 2014 r. Oczywiście nie każda witryna rozwija się w takim samym tempie ani nie wymaga takiej samej ilości danych, dlatego wyróżniamy różne kwartyle w ramach rozkładu: 50. (mediana), 75. i 90. 

Średnia witryna na początku 2014 r. składa się z 75 żądań, które w sumie zajmują 1054 KB, a łączna liczba bajtów (i żądań) wzrastała w ciągu ubiegłego roku w równym tempie. Nie powinno to być zaskakujące, ale ma to istotne konsekwencje dla wydajności: tak, szybkość internetu rośnie, ale w różnym tempie w różnych krajach, a wielu użytkowników nadal ma limity danych i drogie taryfy z limitem, zwłaszcza na urządzeniach mobilnych.

W przeciwieństwie do aplikacji na komputery aplikacje internetowe nie wymagają osobnego procesu instalacji: wystarczy wpisać adres URL, aby aplikacja zaczęła działać. Aby to osiągnąć, musimy często pobierać dziesiątki, a czasem setki różnych zasobów, które razem mogą zajmować kilka megabajtów danych. Muszą one być łączone w setnych części sekundy, aby umożliwić natychmiastowe działanie w internecie, do którego dążymy.

Uzyskanie natychmiastowego dostępu do treści przy zachowaniu tych wymagań nie jest łatwym zadaniem, dlatego kluczowe znaczenie ma optymalizacja wydajności treści: wyeliminowanie zbędnych pobierania, optymalizacja kodowania transferu każdego zasobu za pomocą różnych technik kompresji oraz wykorzystanie buforowania, gdy tylko jest to możliwe, aby wyeliminować zbędne pobieranie.