Sobes.tech
Middle

Kāda ir atšķirība starp HTTP/1 un HTTP/2?

sobes.tech AI

Atbilde no AI

Galvenās atšķirības:

  • Multiplexing (Multiplexing). HTTP/2 ļauj vienlaikus sūtīt un saņemt vairākus pieprasījumus un atbildes caur vienu TCP savienojumu. HTTP/1.1 prasīja atsevišķu savienojumu katram pieprasījumam/atbildei (izņemot pipelining mehānismu, kam bija ierobežojumi).
  • Virsrakstu saspiešana (Header Compression). HTTP/2 izmanto HPACK algoritmu virsrakstu saspiešanai, lai samazinātu to izmēru un pārsūtāmo datu apjomu. HTTP/1.1 virsraksti tiek sūtīti teksta formātā.
  • Plūsmu prioritāte (Stream Prioritization). HTTP/2 klients var norādīt prioritāti dažādām plūsmām (pieprasījumiem/atbildēm), kas ļauj serverim optimizēt datu piegādes secību. HTTP/1.1 tam nav mehānisma.
  • Servera sūtīšana (Server Push). HTTP/2 ļauj serverim nosūtīt resursus klientam pirms tas tos pieprasa, balstoties uz pieņēmumu par to nepieciešamību lapas attēlošanai. HTTP/1.1 klientam ir jāpieprasa katrs resurss atsevišķi.
  • Rāmu formāts (Binary Framing). HTTP/2 pārsūta datus binārajā formātā (rāmjos), kas atvieglo parsēšanu un palielina efektivitāti salīdzinājumā ar HTTP/1.1 teksta formātu.

Salīdzinājums tabulā:

Raksturlielums HTTP/1.1 HTTP/2
Savienojums Viens savienojums katram pieprasījumam (bez pipelining) Viens savienojums vairākiem plūsmām
Multiplexing Nav (vai ierobežots pipelining) Ir
Virsrakstu saspiešana Nav HPACK (bināra saspiešana)
Plūsmu prioritāte Nav Ir
Servera sūtīšana Nav Ir
Datu formāts Teksts Binārs (rāmji)
Head-of-Line bloķēšana Pastāv Daļēji risināts ar multiplexing'u

HTTP/1.1 pieprasījuma piemērs:

// GET /index.html HTTP/1.1
// Host: example.com
// User-Agent: curl/7.68.0
// Accept: */*

HTTP/2 datu daļas piemērs (rāmu apmaiņa ir sarežģītāka un nav tik vienkārši attēlojama):

// HTTP/2 komunikācija notiek uz rāmu līmeņa (HEADERS, DATA utt.),
// kas ir bināri un paslēpti lietotājam līmenī.
// To attēlošana vienkāršā tekstā ir sarežģīta.
// Virsraksti tiek saspiesti un pārsūtīti HEADERS rāmi.
// Atbilde tiek pārsūtīta DATA rāmos.