Optymalizacja skuteczności treści

Nasze aplikacje internetowe stale się rozwijają pod względem zakresu, ambicji i funkcjonalności – i to dobrze. Jednak nieustanny rozwój internetu napędza inny trend: ilość danych pobieranych przez każdą aplikację stale rośnie w stałym tempie. Aby zapewnić wysoką wydajność, musimy zoptymalizować dostarczanie każdego bajtu.

Jak wygląda nowoczesna aplikacja internetowa? Odpowiedź na to pytanie znajdziemy w HTTP Archive. Projekt śledzi sposób tworzenia stron internetowych, okresowo indeksując najpopularniejsze witryny (ponad 300 tys. z listy Alexa Top 1M) oraz rejestrując i agregując statystyki dotyczące liczby zasobów, typów treści i innych metadanych dla każdego miejsca docelowego.

Trendy HTTP Archive

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 KB

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

Na początku 2014 roku przeciętna witryna składała się z 75 żądań, które łącznie przesyłały 1054 KB danych. Łączna liczba bajtów (i żądań) rosła w stałym tempie przez cały poprzedni rok. Samo w sobie nie powinno to być zaskakujące, ale ma 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 podlega limitom danych i korzysta z kosztownych abonamentów z limitem danych – zwłaszcza na urządzeniach mobilnych.

W przeciwieństwie do aplikacji komputerowych aplikacje internetowe nie wymagają osobnego procesu instalacji: wystarczy wpisać adres URL i można zacząć korzystać z aplikacji – to kluczowa funkcja internetu. Aby jednak było to możliwe, często musimy pobrać dziesiątki, a czasem setki różnych zasobów, które mogą zajmować megabajty danych i muszą zostać połączone w ciągu kilkuset milisekund, aby zapewnić natychmiastowe działanie strony internetowej, do którego dążymy.

Osiągnięcie natychmiastowego działania strony internetowej przy tych wymaganiach nie jest łatwe, dlatego kluczowe jest optymalizowanie wydajności treści: eliminowanie niepotrzebnych pobrań, optymalizowanie kodowania transferu każdego zasobu za pomocą różnych technik kompresji i wykorzystywanie pamięci podręcznej, gdy tylko jest to możliwe, aby wyeliminować zbędne pobrania.