Sobes.tech
Middle

Kuo skiriasi HTTP/1 ir HTTP/2 protokolai?

sobes.tech AI

Atsakymas iš AI

Pagrindiniai skirtumai tarp HTTP/1.1 ir HTTP/2:

  • Mulių paketavimas:

    • HTTP/1.1: Užklausų apdorojimas nuoseklus per vieną jungtį. Paralleliam įkėlimui reikėjo kelių TCP jungčių.
    • HTTP/2: Mulių paketavimas per vieną TCP jungtį. Leidžia vienu metu siųsti kelis užklausimus ir gauti atsakymus, nesulaikydami vienas kitą.
  • Antraščių suspaudimas (HPACK):

    • HTTP/1.1: Antraštės perduodamos nesuspaustos, kas gali būti perteklinga dideliame užklausų kiekyje.
    • HTTP/2: Antraščių suspaudimas naudojant HPACK algoritmą. Sumažina perduodamų duomenų dydį.
  • Srautų prioritetas:

    • HTTP/1.1: Prioritetas neegzistavo.
    • HTTP/2: Klientas gali nustatyti prioritetus skirtingiems duomenų srautams, įtakojančius jų apdorojimo tvarką serveryje.
  • Serverio siuntimas (Server Push):

    • HTTP/1.1: Klientas turi aiškiai prašyti kiekvieno resurso (CSS, JS, vaizdų).
    • HTTP/2: Serveris gali iš anksto siųsti klientui resursus, kurie, jo manymu, reikalingi puslapio atvaizdavimui, prieš tai, kai klientas jų paprašys.
  • Dvejetainis protokolas:

    • HTTP/1.1: Tekstinis protokolas, palyginti lengvai skaitomas.
    • HTTP/2: Dvejetainis protokolas, efektyvesnis apdorojimui ir perdavimui.

Lyginamoji lentelė:

Savybė HTTP/1.1 HTTP/2
Mulių paketavimas Ne (reikia kelių TCP) Taip (vienas TCP)
Antraščių suspaudimas Ne Taip (HPACK)
Srautų prioritetas Ne Taip
Serverio siuntimas Ne Taip
Protokolo formatas Tekstinis Dvejetainis
Head-of-Line blokavimas Yra (vieno TCP atveju) Sumažintas dėka mulitplekso

Pavyzdys, kaip veikia mulitplekso (konceptualiai):

// HTTP/1.1: Sekveninės užklausos
fetch('/resource1')
  .then(() => fetch('/resource2'))
  .then(() => fetch('/resource3'));

// HTTP/2: Paralele užklausos per vieną jungtį
// Naršyklėje tai vyksta automatiškai HTTP/2
// Konceptualiai užklausos gali būti siunčiamos beveik tuo pačiu metu