Middle
V čem se liší protokoly HTTP/1 a HTTP/2?
sobes.tech AI
Odpověď od AI
Hlavní rozdíly mezi HTTP/1.1 a HTTP/2:
-
Multiplexování:
- HTTP/1.1: Sekvenční zpracování požadavků na jednom spojení. Pro paralelní načítání bylo potřeba několik TCP spojení.
- HTTP/2: Multiplexování na jednom TCP spojení. Umožňuje současné odesílání více požadavků a přijímání odpovědí, aniž by se navzájem blokovaly.
-
Komprese hlaviček (HPACK):
- HTTP/1.1: Hlavičky jsou přenášeny bez komprese, což může být nadbytečné při velkém počtu požadavků.
- HTTP/2: Komprese hlaviček pomocí algoritmu HPACK. Snižuje velikost přenášených dat.
-
Prioritizace toků:
- HTTP/1.1: Nebyla možnost priorizace.
- HTTP/2: Klient může přiřadit priority různým tokům dat, ovlivňující jejich pořadí zpracování serverem.
-
Server push:
- HTTP/1.1: Klient musí explicitně požadovat každý zdroj (CSS, JS, obrázky).
- HTTP/2: Server může předem posílat zdroje, které považuje za nutné pro zobrazení stránky, ještě před tím, než je klient požádá.
-
Binární protokol:
- HTTP/1.1: Textový protokol, relativně snadno čitelný.
- HTTP/2: Binární protokol, efektivnější pro parsování a přenos.
Porovnávací tabulka:
| Charakteristika | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexování | Ne (více TCP) | Ano (jedno TCP) |
| Komprese hlaviček | Ne | Ano (HPACK) |
| Prioritizace toků | Ne | Ano |
| Server push | Ne | Ano |
| Formát protokolu | Textový | Binární |
| Problém Head-of-Line blokování | Přítomen (pro jedno TCP) | Snížen díky multiplexování |
Příklad multiplexování (konceptuální):
// HTTP/1.1: Sekvenční požadavky
fetch('/resource1')
.then(() => fetch('/resource2'))
.then(() => fetch('/resource3'));
// HTTP/2: Paralelní požadavky na jednom spojení
// V prohlížeči se to děje automaticky
// Koncepčně, požadavky mohou být odeslány téměř současně