HTTP/2 je nová verze protokolu, která dokáže urychlit načítání vašich webů. Je už téměř plně podporovaná na straně prohlížečů i serverového software.

Pokud máte vlastní server, není problém dvojku hned nasadit a já vám radím, abyste to taky udělali. České sdílené hostingy zatím většinou čekají.

Frontendu webu se přechod na HTTP/2 dotkne kromě jiného tak, že přestává být potřeba slučovat více vývojářských souborů do jednoho distribučního.

Co je HTTP/2 a jak se liší od HTTP/1.1?

  • Weby na něm fičí jako když bičem mrská.
  • Je binární, takže se rychleji parsuje a přenáší.
  • Komprimuje i hlavičky a tedy třeba i přenášené cookies.
  • Podporuje multiplexing: v jednu chvíli jde po síti více požadavků i odpovědí, odpadá pak řazení dotazů do fronty.
  • Podporuje Server Push: při prvním dotazu (na HTML) můžete rovnou poslat assety: obrázky, CSS nebo JS.
  • V praxi ale nejdřív musíte běžet na HTTPS.

Web může být na HTTP/2 až násobně rychlejší

Dema jsou působivá: http2demo.io a httpvshttps.com, ale vždy záleží na způsobu servírování konkrétního webu do prohlížeče. Pokud je hodně optimalizovaný pro HTTP/1.1, může být po přechodu na dvojku i mírně pomalejší. Je tedy dobré zmínit, že přechod na dvojku není bez práce.

Jak na web nasadit HTTP/2?

  1. Nejdříve je potřeba přejít na bezpečný protokol HTTPS.
  2. Zapnutí na serveru:
    • Máte vlastní? Je potřeba aktualizovat nebo případně jen nastavit Apache, IIS, NGINX nebo to co vám tam běží.
    • Jste na sdíleném hostingu? V Česku vám ve většině případů nezbývá než prudit webhosting a čekat. Čest výjimkám popsaným níže.
  3. Aktualizujte frontend. To si na tomto blogu zaslouží mírně rozvést, že? Čtěte dále.

Webů běžících na HTTP/2 je už v Česku docela dost. Třeba VašeČočky.cz nebo Zdroják, ten ale jen ve Firefoxu.

Optimalizace frontendu se mění: hodně malých souborů je plus

Při optimalizaci pro HTTP/1.1 frontendisti dbající na rychlost minimalizují data co stránka posílá a počet dotazů na server. Na HTTP/2 už na počtu dotazů tak moc nezáleží.

Pro HTTP/2 je tedy ideální posílání menších CSS, JS souborů. Hlavní důvody pro některé aktuální optimalizační triky odpadají:

  • CSS sprite (slučování obrázků do jednoho)
    Pokud „sprajty“ děláte jen kvůli frontě requestů, není to na HTTP/2 potřeba. Jsou ale i jiné důvody pro jejich použití – třeba datová velikost nebo pořadí zobrazení. Sprity prostě, zdá se, pro potřeby některých scénářů přežijí.
  • Data-uri (přímé vkládání obrázků do HTML nebo CSS)
    Ty se dělaly hlavně kvůli requestům, což nyní padá. Na druhou stranu zvětšovaly datový objem původního obrázku.
  • Spojování CSS a JS
    Obvykle bude lepší posílat řadu malých souborů. Pokud soubory rozdělíme, nemusí být potřeba připravovat kritické CSS, protože menší soubory s CSS dorazí dříve. Jednotlivé CSS a JS také můžeme kešovat s různými pravidly. Nemusíme také do stránky vkládat CSS, které stránka neobsahuje. Totéž u Javascriptu. Samozřejmě v praxi je potřeba zkoušet všechny možnosti. Univerzální doporučení zatím nemám, jen ta papírová.
  • Domain sharding (rozdělování domén pro znásobování fronty)
    Díky tomu se navíc zbavíme vytváření potřeby vytváření nových TCP spojení.

Na tomhle místě si asi řeknete, že ono fakt nestačí změnit protokoly. Moje zkušenost je taková, že pokud jste hodně optimalizovali pro HTTP/1.1, budete do frontendu muset pořádně sáhnout. Pokud jste dosud optimalizaci neřešili, pouhé přepnutí na HTTP/2 vašemu webu nejspíš více či méně pomůže.

Podpora: všude to běží s výjimkou většiny sdílených hostingů

Prohlížeče

HTTP/2 je podporované prakticky všemi moderními prohlížeči. Podívejte se na Can I use. Protokol nepodporují jen Explorery 10 a starší a prohlížeče na čtyřkových Androidech. U webu s běžnou českou návštěvností odhadem do pěti procent.

Nový protokol je ale zpětně kompatibilní, takže obstaróžním prohlížečům web přijde na starém dobrém HTTP/1.1. Raději tedy zmíním, že váš frontend optimalizovaný pro HTTP/2 může být na starých křápech o dost pomalejší.

Web servery

Pro Apache je tady mod_http2 (nyní ale označený jako experimental), NGINX podporuje dvojku od verze 1.9.5 a Microsoft IIS od verze 10.

Serverový software je takřka připravený. Teď ještě, aby to někdo na těch serverech zapnul.

Pokud máte vlastní nebo pronajatý server, nebude problém zapnutí HTTP/2 domluvit. Horší je to na sdíleném hostingu.

České sdílené hostingy

Ty většinou čekají stabilní verzi mod_http2. Na cn130.com je pěkný seznam českých hostingů, které HTTP/2 podporují. Tedy seznam… Jsou zatím dva, možná tři.

Nasazení HTTP/2 s Cloudflare

Zajímavou možnost nabízí Cloudflare – CDN, které může fungovat jako HTTPS a HTTP/2 proxy před vaším webem. Ve free plánu pro jeden web je kromě toho také základní DDOS a výhody CDN. Stačí na ně nastavit nameservery své domény. Zkoušel jsem zatím experimentálně a je to hezké.

Co teď?

Pokud máte vlastní server, nebo hostujete tam, kde už HTTP/2 umí, rozhodně do toho jděte. Budu rád, když vaše zkušenosti nasdílíte. Ostatní mohou zkusit Cloudflare nebo čekat.

Napsat komentář