Sobes.tech
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 pipelining mehhanism, 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.