Sobes.tech
Middle

Jaký je rozdíl mezi HTTP/1 a HTTP/2?

sobes.tech AI

Odpověď od AI

Hlavní rozdíly:

  • Multiplexování (Multiplexing). HTTP/2 umožňuje současné odesílání a přijímání více požadavků a odpovědí přes jedno TCP spojení. HTTP/1.1 vyžadoval samostatné spojení pro každý požadavek/odpověď (kromě mechanismu pipelining, který měl omezení).
  • Hlavičky (Header Compression). HTTP/2 používá kompresi hlaviček pomocí algoritmu HPACK, aby snížil jejich velikost a množství přenášených dat. V HTTP/1.1 jsou hlavičky odesílány v textové podobě.
  • Prioritizace toků (Stream Prioritization). V HTTP/2 může klient určit prioritu pro různé toky (požadavky/odpovědi), což umožňuje serveru optimalizovat pořadí doručování dat. HTTP/1.1 takový mechanismus nemá.
  • Server Push (Server Push). HTTP/2 umožňuje serveru posílat zdroje klientovi předtím, než je klient požádá, na základě předpokladu jejich potřeby pro zobrazení stránky. V HTTP/1.1 musí klient explicitně požádat o každý zdroj.
  • Formát rámců (Binary Framing). HTTP/2 přenáší data v binárním formátu (ramečky), což usnadňuje parsing a zvyšuje efektivitu ve srovnání s textovým formátem HTTP/1.1.

Porovnání v tabulce:

Vlastnost HTTP/1.1 HTTP/2
Připojení Jedno připojení na požadavek (bez pipelining) Jedno připojení pro více toků
Multiplexování Ne (nebo omezené pipelining) Ano
Komprese hlaviček Ne HPACK (binární komprese)
Prioritizace toků Ne Ano
Server Push Ne Ano
Formát dat Text Binární (ramečky)
Head-of-Line blokování Přítomno Částečně řešeno multiplexováním

Příklad požadavku v HTTP/1.1:

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

Příklad částečného zobrazení dat v HTTP/2 (výmena rámců je složitější a není takto přímo zobrazitelná):

// V HTTP/2 komunikace probíhá na úrovni rámců (HEADERS, DATA atd.),
// které jsou binární a skryté před uživatelem na úrovni aplikace.
// Představit je v jednoduché textové podobě je složité.
// Hlavičky jsou komprimovány a přenášeny v HEADERS rámci.
// Tělo odpovědi je přenášeno v DATA rámcích.