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.

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.