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