Sobes.tech
Middle

Czym różnią się protokoły HTTP/1 i HTTP/2?

sobes.tech AI

Odpowiedź od AI

Główne różnice między HTTP/1.1 a HTTP/2:

  • Multipleksowanie:

    • HTTP/1.1: Przetwarzanie żądań sekwencyjnie na jednym połączeniu. Do równoczesnego ładowania potrzebne było kilka połączeń TCP.
    • HTTP/2: Multipleksowanie na jednym połączeniu TCP. Pozwala na jednoczesne wysyłanie wielu żądań i odbieranie odpowiedzi, nie blokując się nawzajem.
  • Kompresja nagłówków (HPACK):

    • HTTP/1.1: Nagłówki przesyłane bez kompresji, co może być nadmiarowe przy dużej liczbie żądań.
    • HTTP/2: Kompresja nagłówków z użyciem algorytmu HPACK. Zmniejsza rozmiar przesyłanych danych.
  • Priorytetyzacja strumieni:

    • HTTP/1.1: Brak możliwości priorytetyzacji.
    • HTTP/2: Klient może przypisywać priorytety różnym strumieniom danych, wpływając na kolejność ich obsługi przez serwer.
  • Push serwera (Server Push):

    • HTTP/1.1: Klient musi wyraźnie żądać każdego zasobu (CSS, JS, obrazy).
    • HTTP/2: Serwer może wysyłać zasoby, które jego zdaniem będą potrzebne do wyświetlenia strony, zanim klient je zażąda.
  • Protokół binarny:

    • HTTP/1.1: Protokół tekstowy, stosunkowo łatwy do odczytania.
    • HTTP/2: Protokół binarny, bardziej wydajny do parsowania i przesyłania.

Tabela porównawcza:

Charakterystyka HTTP/1.1 HTTP/2
Multipleksowanie Nie (wiele TCP) Tak (jedno TCP)
Kompresja nagłówków Nie Tak (HPACK)
Priorytetyzacja strumieni Nie Tak
Push serwera Nie Tak
Format protokołu Tekstowy Binarny
Problem Head-of-Line Blocking Obecny (dla TCP) Zredukowany dzięki multipleksowaniu

Przykład multipleksowania (koncepcyjny):

// HTTP/1.1: Żądania sekwencyjne
fetch('/resource1')
  .then(() => fetch('/resource2'))
  .then(() => fetch('/resource3'));

// HTTP/2: Równoległe żądania na jednym połączeniu
// W przeglądarce dzieje się to automatycznie dla HTTP/2
// Koncepcyjnie, żądania mogą być wysyłane niemal jednocześnie