Sobes.tech
Middle

Millised on HTTP/1 ja HTTP/2 protokollide erinevused?

sobes.tech AI

Vastus AI-lt

Peamised erinevused HTTP/1.1 ja HTTP/2 vahel:

  • Mulgipleximine:

    • HTTP/1.1: Päringute järjestikune töötlemine ühe ühenduse kaudu. Paralleellaadimiseks oli vaja mitu TCP-ühendust.
    • HTTP/2: Mulgipleximine ühe TCP-ühenduse kaudu. Võimaldab samaaegselt saata mitu päringut ja saada vastuseid, takistades üksteise blokeerimist.
  • Pealkirjade tihendamine (HPACK):

    • HTTP/1.1: Pealkirjad edastatakse mitte tihendatult, mis võib olla liigset suure arvu päringute puhul.
    • HTTP/2: Pealkirjade tihendamine HPACK algoritmi abil. Vähendab edastatavate andmete suurust.
  • Voolude prioriseerimine:

    • HTTP/1.1: Prioriseerimise võimalus puudus.
    • HTTP/2: Klient saab määrata erinevatele voogudele prioriteedid, mõjutades nende töötlemise järjekorda serveris.
  • Serveri push:

    • HTTP/1.1: Klient peab iga ressurssi (CSS, JS, pildid) selgelt nõudma.
    • HTTP/2: Server võib eelnevalt saata kliendile ressursid, mis tema arvates on vajalikud lehe kuvamiseks, enne kui klient neid küsib.
  • Kaheksandiline protokoll:

    • HTTP/1.1: Tekstiprotokoll, suhteliselt lihtne lugeda.
    • HTTP/2: Kaheksandiline protokoll, tõhusam parseldamiseks ja edastamiseks.

Võrdlustabel:

Omadus HTTP/1.1 HTTP/2
Mulgipleximine Ei (vajab mitu TCP-d) Jah (üks TCP)
Pealkirjade tihendamine Ei Jah (HPACK)
Voolude prioriseerimine Ei Jah
Serveri push Ei Jah
Protokolli formaat Tekstiprotokoll, lihtne lugeda Kaheksandiline
Head-of-Line blokeering On (ühe TCP puhul) Vähenenud multiplexingu tõttu

Näide multiplexingist (kontseptuaalselt):

// HTTP/1.1: Järjestikused päringud
fetch('/resource1')
  .then(() => fetch('/resource2'))
  .then(() => fetch('/resource3'));

// HTTP/2: Paralleelsed päringud ühe ühenduse kaudu
// Brauseris toimub see automaatselt HTTP/2 jaoks
// Kontseptuaalselt võivad päringud olla saadetud peaaegu samaaegselt