Trudno wyobrazić sobie dzisiejsze strony internetowe bez protokołu HTTP, który od dawna jest podstawowym sposobem wymiany informacji w sieciach WWW. Jego pierwsza wersja (1.0) powstała w 1996 r. i była usprawniana aż do 2015 r., w którym została wdrożona wersja 2, a aktualnie trwają pracę nad wdrożeniem wersji 3, która powinno stać się standardem już w niedługim czasie.
HTTP/1.1
Nie chcąc rozwodzić się nad dokładnym działaniem tej wersji, należy wspomnieć jedynie o najważniejszym, tj. w jaki sposób zasoby są pobierane.
W wersji 1.1 w czasie jednego połączenia TCP z serwerem może być wysłane tylko jedno zapytanie HTTP, a każde kolejne musi czekać na zakończenie poprzedniego. Takie zachowanie implikuje kolejkowanie zapytań, co finalnie ma wpływ na dłuższe czasy wczytywania strony, szczególnie jeśli tych zasobów (css, js, img) jest wiele.
HTTP/2
Druga wersja protokołu HTTP wprowadziła znaczne zmiany w sposobie wczytywania zasobów względem poprzedniej.
Przeglądarki zamiast operować na wielu równoczesnych połączeniach TCP w celu pobrania zasobów mogą wykorzystywać tylko jedno, w którym może być przesłanych więcej ramek HTTP, które nie muszą być kolejkowane. Takie połączenie TCP zostaje otwarte do momentu zakończenia pobierania zasobów, po czym jest zamykane.
Nietrudno zauważyć jako wpływ taki proces ma na czasy wczytywania stron www – wymagane zasoby strony mogą być pobierane jednym połączeniem TCP.
Należy pamiętać, że HTTP/2 nie zastępuje standardowego HTTP/1. Jest tylko jego rozszerzeniem, dlatego nie musimy obawiać się o kompatybilność standardów.
Implementacja
Implementacja jest dość prosta i sprowadza się do konfiguracji serwera. Jeśli Twój hosting obsługuje HTTP/2 – możesz bez problemu to wykorzystać. Jeśli tego nie wiesz, skorzystaj ze strony http2.pro. Dodatkowym wymaganiem jest instalacja certyfikatu SSL.
Wsparcie
Aktualnie wszystkie nowoczesne przeglądarki wspierają protokół HTTP/2 bez dodatkowych konfiguracji.
HTTP/3
Zadaniem protokołu TCP, który jest wykorzystywany w HTTP/2 jest dostarczanie pakietów w konkretnej kolejności jeden po drugim. W momencie gdy jeden z nich zostanie utracony, kolejne występujące po nim nie mają możliwości poprawnego dotarcia do miejsca docelowego i są blokowane, a transmisja danych przerwana. Jest to jedna z bolączek, którą rozwiązuje wykorzystanie protokołu HTTP/3.
Ta wersja wykorzystuje protokół UDP zamiast TCP, w którym kolejność pakietów nie jest tak istotna i w momencie gdy jeden z nich zostaje utracony, połączenie jest kontynuowane, a pozostałe są w dalszym ciągu pobierane. Jest to szczególnie istotne w przypadku niestabilnych sieci.
Wsparcie
Na dzień pisania artykułu najpopularniejsze przeglądarki takie jak Google Chrome, Forefox czy MS Edge domyślnie wspierają protokół. Wyjątkiem jest Safari, w którym wsparcie jest oznaczone jako funkcja eksperymentalna, którą można włączyć w ustawieniach przeglądarki.
Źródła
- https://developers.google.com/web/fundamentals/performance/http2
- https://blog.cloudflare.com/http3-the-past-present-and-future/
Dodaj komentarz