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.
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.