Co je HTTP/2 a HTTP/3 a proč na nich záleží

Vývoj protokolu HTTP
HTTP neboli Hypertext Transfer Protocol je základem webové komunikace. Pochopení tohoto protokolu je důležité pro výběr správného hostingu. Pokaždé, když otevřete webovou stránku, váš prohlížeč pošle serveru HTTP požadavek a server odpoví požadovaným obsahem. HTTP/1.1 zavedený v roce 1997 sloužil webu téměř dvě desetiletí, ale s rostoucí složitostí moderních webů začala být jeho omezení stále zjevnější. Dnešní weby načítají v průměru 70 až 100 zdrojů na stránku včetně HTML, CSS, JavaScriptu, obrázků a fontů, a HTTP/1.1 nebyl pro tak intenzivní komunikaci navržen.
HTTP/2 byl vydán v roce 2015 jako reakce na tato omezení a přinesl revoluční změny ve způsobu, jakým spolu prohlížeč a server komunikují. HTTP/3 zavedený v roce 2022 jde o krok dál tím, že nahrazuje protokol TCP protokolem QUIC pro ještě rychlejší a spolehlivější spojení. Pochopení těchto protokolů je důležité pro každého, kdo pracuje ve webovém vývoji nebo hostingu, protože přímo ovlivňují rychlost a výkon webu.
HTTP/1.1 a jeho omezení
Jak HTTP/1.1 funguje
HTTP/1.1 používá textový formát pro hlavičky požadavků a odpovědí a funguje na principu požadavek-odpověď. Prohlížeč pošle požadavek na jeden zdroj, počká na odpověď a teprve pak pošle další požadavek. Tomu se říká problém head-of-line blocking, kdy jeden pomalý požadavek blokuje všechny ostatní požadavky za sebou. Aby toto omezení obešly, otevírají prohlížeče více paralelních TCP spojení ke stejnému serveru, obvykle 6 až 8 spojení, ale každé spojení vyžaduje samostatný TCP handshake a vyjednávání TLS, což spotřebovává čas a prostředky.
Obcházení omezení HTTP/1.1
Weboví vývojáři léta používali různé triky k obcházení omezení HTTP/1.1. Domain sharding je technika, při níž se zdroje rozdělí na více subdomén, aby prohlížeč mohl otevřít více paralelních spojení. CSS sprites slučují mnoho malých ikon do jednoho velkého obrázku, aby se snížil počet požadavků. Konkatenace spojuje více souborů JavaScriptu nebo CSS do jednoho velkého souboru. Inlining vkládá malé bloky CSS nebo JavaScriptu přímo do HTML. Všechny tyto techniky komplikují vývoj a údržbu webu a s příchodem HTTP/2 se stávají zbytečnými.
Revoluce HTTP/2
Multiplexing
Nejdůležitější novinkou protokolu HTTP/2 je multiplexing, který umožňuje posílat více požadavků a odpovědí současně přes jediné TCP spojení. Místo čekání na odpověď před odesláním dalšího požadavku může prohlížeč poslat všechny požadavky najednou a server odpovídá, jakmile má data připravená. Tím se na úrovni aplikace odstraňuje head-of-line blocking a dramaticky zrychluje načítání stránek s mnoha zdroji. Jedno spojení nahrazuje potřebu 6 až 8 paralelních spojení, což šetří paměť i procesorový čas na obou stranách.
Komprese hlaviček pomocí HPACK
HTTP/1.1 posílá hlavičky jako nekomprimovaný text s každým požadavkem. Hlavičky s cookies mohou mít několik kilobajtů a posílají se s každým požadavkem na stejný server. HTTP/2 používá pro kompresi hlaviček algoritmus HPACK, který udržuje tabulku dříve odeslaných hlaviček a posílá jen rozdíly. Tím se velikost hlaviček snižuje o 85 až 95 procent, což je obzvlášť významné u webů s velkými cookies nebo mnoha vlastními hlavičkami.
Server Push
Funkce Server Push umožňuje serveru proaktivně posílat zdroje prohlížeči ještě předtím, než si je prohlížeč výslovně vyžádá. Například když si prohlížeč vyžádá HTML stránku, server může okamžitě poslat soubory CSS a JavaScript, o kterých ví, že budou potřeba. Tím se eliminuje prodleva mezi parsováním HTML a odesláním požadavků na související zdroje. V praxi je třeba Server Push používat opatrně, protože příliš agresivní posílání zdrojů může spotřebovat šířku pásma na zdroje, které už prohlížeč má v cache.
Binární formát
HTTP/2 používá binární formát místo textového formátu HTTP/1.1. Binární formát je efektivnější pro parsování, protože počítače přirozeně pracují s binárními daty, odolnější vůči chybám, protože má jasně definovanou strukturu rámců, a kompaktnější, protože neplýtvá bajty na textové oddělovače a bílé znaky. Každá HTTP/2 zpráva se dělí na rámce, které patří ke konkrétnímu streamu, a více streamů se multiplexuje přes jediné spojení.
Prioritizace streamů
HTTP/2 umožňuje prohlížeči přiřadit každému požadavku prioritu. CSS soubory, které blokují vykreslování stránky, mohou dostat vyšší prioritu než obrázky načítané pod ohybem stránky. Server tyto priority používá k rozhodnutí, v jakém pořadí data posílat, když šířka pásma nemůže uspokojit všechny požadavky současně. Výsledkem je rychlejší zobrazení viditelného obsahu stránky, i když se ještě všechny zdroje načítají.
HTTP/3 a protokol QUIC
Problém TCP
Ačkoli HTTP/2 řeší mnoho problémů na úrovni aplikace, pro transport stále používá TCP. TCP má svůj vlastní problém head-of-line blocking, protože pokud se ztratí jeden paket, všechny pakety za ním musí čekat, dokud se ztracený paket znovu neodešle a nepřijme. V HTTP/2, kde všechny streamy sdílejí jediné TCP spojení, ztráta jednoho paketu blokuje všechny streamy, i ty, jejichž pakety úspěšně dorazily. Na nestabilních sítích, jako jsou mobilní nebo WiFi sítě, to může být významný problém.
Protokol QUIC
HTTP/3 nahrazuje TCP protokolem QUIC vyvinutým společností Google, který běží přes UDP. QUIC implementuje spolehlivé doručování dat nezávisle pro každý stream, což znamená, že ztráta paketu v jednom streamu neblokuje ostatní streamy. QUIC také integruje šifrování TLS 1.3 přímo do transportního protokolu, čímž odpadá potřeba samostatného TLS handshaku. Výsledkem je rychlejší navázání spojení, protože QUIC handshake spojuje transportní a kryptografické parametry do jednoho kroku.
Spojení Zero Round Trip
QUIC podporuje navázání spojení 0-RTT (Zero Round Trip Time) pro opakované návštěvy. Když uživatel znovu navštíví dříve navštívený web, QUIC může začít posílat data okamžitě bez jakéhokoli handshaku s využitím kryptografických parametrů z předchozí relace. To je obzvlášť významné pro mobilní uživatele, kteří často přepínají mezi WiFi a mobilními sítěmi, protože spojení QUIC přežívá změnu IP adresy díky Connection ID místo identifikace podle IP adresy a portu.
Migrace spojení
TCP spojení je definováno dvojicí IP adres a portů, což znamená, že se spojení přeruší při změně IP adresy. Když mobilní uživatel přejde z WiFi na mobilní síť, všechna TCP spojení se přeruší a musí se znovu navázat. QUIC používá pro identifikaci spojení Connection ID místo IP adresy, což umožňuje plynulou migraci mezi sítěmi bez přerušení přenosu dat. Uživatel přechod nezaznamená a web se dál načítá bez přerušení.
Výkon v praxi
Měření rychlosti
V praxi přináší HTTP/2 zlepšení rychlosti načítání o 15 až 50 procent oproti HTTP/1.1 v závislosti na složitosti webu. Největší přínos mají weby s mnoha malými zdroji, protože multiplexing odstraňuje režii spojenou s otevíráním více spojení. HTTP/3 přináší dodatečné zlepšení o 5 až 15 procent za ideálních podmínek, ale na nestabilních sítích s častou ztrátou paketů může být zlepšení 30 procent i více díky odstranění head-of-line blockingu na úrovni transportu.
Vliv na Core Web Vitals
HTTP/2 a HTTP/3 přímo zlepšují metriky Core Web Vitals, které Google používá pro hodnocení. Zkontrolujte výkon svého webu. Largest Contentful Paint se zlepšuje, protože se zdroje načítají rychleji paralelně. First Input Delay se snižuje, protože JavaScript se stahuje a vykonává rychleji. Cumulative Layout Shift se zlepšuje, protože se fonty a obrázky načítají rychleji, čímž se omezuje posun obsahu. Time to First Byte se s HTTP/3 zlepšuje díky rychlejšímu navázání spojení.
Jak zapnout HTTP/2 a HTTP/3
Podpora na serveru
HTTP/2 vyžaduje HTTPS spojení (platný TLS certifikát), protože všechny moderní prohlížeče podporují HTTP/2 pouze přes TLS. Většina moderních webových serverů včetně Nginx, Apache a LiteSpeed podporuje HTTP/2 s jednoduchou konfigurací. U Nginx stačí přidat parametr http2 do direktivy listen. Apache vyžaduje povolení modulu mod_http2. HTTP/3 vyžaduje podporu protokolu QUIC, kterou v současnosti nabízejí Nginx s modulem quic, LiteSpeed, Cloudflare a další poskytovatelé CDN.
Kontrola protokolu
To, jaký HTTP protokol váš web používá, můžete zkontrolovat prostřednictvím Chrome DevTools. Otevřete kartu Network, klikněte pravým tlačítkem na záhlaví sloupce, přidejte sloupec Protocol a obnovte stránku. U každého požadavku uvidíte h2 pro HTTP/2 nebo h3 pro HTTP/3. Online nástroje jako KeyCDN HTTP/2 Test a HTTP/3 Check umožňují rychlou kontrolu bez instalace nástrojů.
Závěr
HTTP/2 a HTTP/3 jsou významná vylepšení, která přinášejí rychlejší načítání webu, lepší uživatelský zážitek a lepší pozici v Googlu. Multiplexing, komprese hlaviček a server push v HTTP/2 odstraňují mnohá omezení starého protokolu HTTP/1.1. HTTP/3 s protokolem QUIC řeší problémy se ztrátou paketů a migrací spojení, což je obzvlášť užitečné pro mobilní uživatele. U BeoHosting všechny hostingové tarify podporují HTTP/2 a naše pokročilé tarify zahrnují i podporu HTTP/3 pro maximální výkon webu.
BeoHosting Team
10+ let zkušeností — Specialisté na webhosting a infrastrukturu
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Naposledy aktualizováno: