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