Hlavní navigace

Schválení HTTP/2 přinese uživatelům rychlejší načítání webových stránek

Marek Janouš

HTTP/2 neřeší všechny technické bolesti webu, standardizuje ale to, co uvítá každý uživatel: rychlejší načítání stránek. Prohlížeče i servery přejdou na nový protokol postupně.

Protokol HTTP/2 byl schválen řídící skupinou (Internet Engineering Steering Group) zodpovědnou za standardizaci technické stránky internetu; oznámil to včera na svém blogu Mark Nottingham, předseda pracovní skupiny pro HTTP, která standard vypracovala.

Uživatelé mohou od novinky čekat znatelné zrychlení načítání webů i bezpečnější šifrovaná spojení. Nový protokol by měl zjednodušit život vývojářům náročnějších internetových projektů, kteří musí omezení HTTP/1.1 ve snaze o výkon všelijak obcházet. Na straně serveru sníží HTTP/2 nároky jak na výpočetní výkon, tak na RAM.

HTTP/1.1 — pozůstatek z webového dávnověku

Protokol HTTP/1.1 má už skoro šestnáct let. Vznikl v době, kdy byly webové stránky mnohem jednodušší: v časech, kdy se vám nejprve načetl holý text, a pak jste (mnohdy připojeni „vytáčeným spojením“, s přenosovou rychlostí o tři řády nižší, než je běžné dnes) čekali na dotažení několika silně zkomprimovaných obrázků.

Nyní je třeba na zobrazení průměrné webové stránky přenést skoro dva megabajty dat, ale vadí především to, že průměrná dnešní stránka se skládá až ze stovky zdrojů (součástí s vlastní webovou adresou). Prohlížeče na to zpravidla otevírají řadu TCP spojení současně, protože požadavky odeslané podle HTTP/1.1 musí server i při využití pipeliningu odeslat ve stejném pořadí, v jakém o ně požádal klient. Přenosový protokol TCP přitom vůbec nebyl navržen tak, aby dobře obsluhoval hromadu souběžných spojení k jedinému klientu. Síť se tím „ucpává“, mimo to se část dat (a sice HTTP hlavičky) přenáší zbytečně opakovaně.

HTTP/2 je nová implementace toho, jak si mezi sebou posílají HTTP požadavky webový server a klient. Oproti HTTP/1.1 dovoluje přenášet mnoho požadavků současně skrze jediné otevřené TCP spojení. Server může navíc poslat klientovi rovnou i to, oč ještě nepožádal, jelikož v době prvotního požadavku na webovou stránku ještě „nevěděl“, že to bude k zobrazení stránky rovněž potřebovat.

Z pohledu uživatele i vývojářů však HTTP/2 zachovává sémantiku HTTP, tedy pojmy a významy: HTTP adresy (URL čili URI), metody, stavové kódy, a všechny hlavičky, u kterých to dává smysl. HTTP/2 je sémanticky v zásadě zpětně kompatibilní s HTTP/1.1, nezaručuje však funkčnost obezliček postavených na nestandardních chováních.

Uživatel si HTTP/2 nastavit nemusí

Uživatel dostane podporu pro HTTP/2 v prohlížeči, nemusí přitom povolovat nic v jeho nastaveních. HTTP/2 se uplatní, jestliže se na tomto způsobu přenosu domluví klient (tedy například prohlížeč) s webovým serverem.

Google ohlásil 9. února, že podporu pro HTTP/2 v Google Chromu 40 „postupně rozvine“ v následujících týdnech. Za Firefox popisuje Patrick McManus, vývojář pracující na jeho síťové části, jak budou jednotlivé verze Firefoxu postupně přecházet na podporu schváleného standardu a opouštět podporu pro předběžné implementace.

Ve Firefoxu lze zjišťovat právě užívaný protokol tímto rozšířením.

Internet Explorer není tak docela samostatným prohlížečem, je vestavěn do Windows, a podpora pro HTTP/2 se prozatím týká pouze Windows 10 Technical Preview. Užívaný protokol lze zjistit v nástrojích pro vývojáře (F12).

Tvůrci všech rozšířených prohlížečů zamýšlejí podporovat HTTP/2 pouze přes TLS (Transport Layer Security), tedy přes šifrovaná spojení, přestože standard sám dovoluje i spojení nešifrovaná.

Postup zavádění HTTP/2 v serverech, v jiných klientech, v programovacích jazycích a v dalších síťových nástrojích je zanášen do seznamu implementací.

Cestu prorážel SPDY, teď ustoupí

Načítání webových stránek se v Googlu snažili zrychlit už koncem minulé dekády. Bylo to v zájmu Googlu, který přece dlouhodobě usiluje o to, abychom webové aplikace vnímali podobně jako aplikace instalované do počítače.

Content 2017 - tip Footshop

Už v roce 2009 Google představil pokusnou implementaci SPDY („speedy“). Na tu posléze navázaly další verze. SPDY ukázal, že o rychlejší web je velký zájem, stále ale chybělo standardizovaného řešení.

Pracovní skupina si vzala za základ SPDY/2. HTTP/2 je jeho přepracováním. Jak se povedlo? Takto se vyjádřil Roberto Peon, jeden z původních tvůrců SPDY, kteří se podíleli i na HTTP/2:

Nepodařilo se dosáhnout všeho, čeho jsem si přál — doufal jsem v lepší oddělení vrstvy rámcové od aplikační, protokoly předávání zpráv nikdy nebudou pracovat tak dobře, jak by mohly. Přesto je HTTP/2 zlepšením a šifrovaná spojení by přes něj měla být rychlejší.

Největší rozdíl oproti SPDY vidím ve způsobu upřednostňování — je mnohem pružnější, nadto přívětivější k proxy serverům. Skoro stejně zásadní je vylepšení komprese hlaviček. V HTTP/2 má sice nepatrně menší účinnost než gzip ve SPDY, je však mnohem rychlejší, a také šetrnější k paměti serveru.

Celkově je protokol HTTP/2 mnohem přesněji specifikován, než kdy bylo SPDY.

Našli jste v článku chybu?
19. 2. 2015 10:14
VM (neregistrovaný)

Protokol HTTP/1.1 vyžaduje otevřít pro každý zdroj nové TCP spojení. Co takhle Connection: Keep-Alive ? http://en.wikipedia.org/wiki/HTTP_persistent_connection

19. 2. 2015 18:54

Děkuji za zajímavý článek, konečně to někdo napsal srozumitelně i pro nesíťaře.