Middle
Mis vahe on HTTP/1 ja HTTP/2 vahel?
sobes.tech AI
Vastus AI-lt
Peamised erinevused:
- Multiplexing (Multiplexing). HTTP/2 võimaldab samaaegselt saata ja vastu võtta mitmeid päringuid ja vastuseid ühe TCP-ühenduse kaudu. HTTP/1.1 nõudis iga päringu/vastuse jaoks eraldi ühendust (välja arvatud
pipeliningmehhanism, millel olid piirangud). - Päiste (Header Compression). HTTP/2 kasutab HPACK algoritmi päiste tihendamiseks, et vähendada nende suurust ja edastatavate andmete kogust. HTTP/1.1-s saadetakse päised tekstivormingus.
- Voogude prioriseerimine (Stream Prioritization). HTTP/2-s saab klient määrata erinevatele voogudele (päringud/vastused) prioriteedi, mis võimaldab serveril optimeerida andmete edastamise järjekorda. HTTP/1.1 sellist mehhanismi ei ole.
- Serveri push (Server Push). HTTP/2 võimaldab serveril saata ressursid kliendile enne, kui klient neid küsib, põhinedes eeldusel nende vajalikkusest lehe kuvamiseks. HTTP/1.1-s peab klient iga ressurssi selgelt küsima.
- Räimede formaat (Binary Framing). HTTP/2 edastab andmeid binaarformaadis (rämides), mis lihtsustab parsimist ja suurendab tõhusust võrreldes HTTP/1.1 tekstivorminguga.
Võrdlus tabelis:
| Omadus | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Ühendus | Üks ühendus iga päringu jaoks (ilma pipelining-ita) |
Üks ühendus mitme vooga |
| Multiplexing | Ei ole (või piiratud pipelining) |
On |
| Päiste tihendamine | Ei ole | HPACK (binaarne tihendamine) |
| Voogude prioriseerimine | Ei ole | On |
| Serveri push | Ei ole | On |
| Andmetüüp | Tekst | Binaarne (rämid) |
| Head-of-Line blokeering | On | Osaliselt lahendatud multiplexing'uga |
HTTP/1.1 päringu näide:
// GET /index.html HTTP/1.1
// Host: example.com
// User-Agent: curl/7.68.0
// Accept: */*
HTTP/2 andmete osaline esitlus (rämide vahetamine on keerulisem ja ei näidata nii lihtsalt):
// HTTP/2-s toimub suhtlus rämide tasemel (HEADERS, DATA ja muud),
// mis on binaarsed ja varjatud kasutajale rakendustasandil.
// Nende lihtne tekstiline esitamine on keeruline.
// Päised tihendatakse ja edastatakse HEADERS rämis.
// Vastuse keha edastatakse DATA rämides.