Sobes.tech
Middle

Aké sú rozdiely medzi protokolmi HTTP/1 a HTTP/2?

sobes.tech AI

Odpoveď od AI

Hlavné rozdiely medzi HTTP/1.1 a HTTP/2:

  • Multiplexing:

    • HTTP/1.1: Sekvenčné spracovanie požiadaviek na jednom spojení. Pre paralelné načítanie bolo potrebných niekoľko TCP spojení.
    • HTTP/2: Multiplexing cez jedno TCP spojenie. Umožňuje súčasné odosielanie viacerých požiadaviek a prijímanie odpovedí, bez blokovania.
  • Komprimácia hlavičiek (HPACK):

    • HTTP/1.1: Hlavičky sa prenášajú v nekomprimovanej forme, čo môže byť nadbytočné pri veľkom počte požiadaviek.
    • HTTP/2: Komprimácia hlavičiek pomocou HPACK algoritmu. Znižuje veľkosť prenášaných dát.
  • Prioritizácia tokov:

    • HTTP/1.1: Chýbala možnosť priorizácie.
    • HTTP/2: Klient môže prideliť priority rôznym tokom dát, ovplyvňujúc ich spracovanie na strane servera.
  • Server push:

    • HTTP/1.1: Klient musí explicitne žiadať každý zdroj (CSS, JS, obrázky).
    • HTTP/2: Server môže vopred odoslať klientovi zdroje, ktoré bude pravdepodobne potrebovať na zobrazenie stránky, ešte pred jeho požiadavkou.
  • Dvojkový protokol:

    • HTTP/1.1: Textový protokol, relatívne ľahko čitateľný.
    • HTTP/2: Dvojkový protokol, efektívnejší na parsovanie a prenos.

Porovnávacia tabuľka:

Charakteristika HTTP/1.1 HTTP/2
Multiplexing Nie (potrebné viac TCP) Áno (jedno TCP)
Komprimácia hlavičiek Nie Áno (HPACK)
Prioritizácia tokov Nie Áno
Server push Nie Áno
Formát protokolu Textový Dvojkový
Problém Head-of-Line Blocking Existuje (pre jeden TCP) Znížený vďaka multiplexingu

Príklad multiplexingu (konceptuálne):

// HTTP/1.1: Sekvenčné požiadavky
fetch('/resource1')
  .then(() => fetch('/resource2'))
  .then(() => fetch('/resource3'));

// HTTP/2: Paralelné požiadavky na jednom spojení
// V prehliadači sa to deje automaticky pre HTTP/2
// Konceptuálne môžu byť požiadavky odoslané takmer súčasne