Podívejte se raději na online verzi přednášky, slajdy mohly být aktualizovány nebo doplněny.
Detail přednášky
Pětiminutová přednáška o nové verzi protokolu HTTP.
Detailní popis fungování protokolu HTTP/2 naleznete v článku na Root.cz a ještě podrobněji pak na necelých 40 stranách v knize http2 explained od Daniela Stenberga, autora programu curl
.
Datum a akce
11. dubna 2015, Devel.cz Konference 2015 (délka přednášky 5 minut, 20 slajdů)
Slajdy
#1 HTTP znamená Hypertext Transfer Protocol a slouží k přenosu webových stránek, souborů a obrázků koťátek.
#2 První verze HTTP byla označována jako verze 0.9 a byla publikována v roce 1991. Pokud jste se narodili před tímto rokem, tak jste starší, než protokol HTTP.
#3 V roce 1996 vyšla verze HTTP 1.0 a v roce 1997 verze 1.1. Ta byla v roce 1999 aktualizována a pak se dlouho nic nedělo. Poslední aktualizace se HTTP/1.1 dočkalo v červnu 2014.
#4 V té poslední aktualizaci bylo pro webové vývojáře největší změnou to, že hlavička Location
může být relativní. Předtím musela být absolutní, ale prohlížečům to bylo stejně jedno.
#5 V roce 2012 se objevil protokol SPDY, za kterým stojí primárně Google. Už podle názvu se tím Google snažil zrychlit načítání webových stránek. A webové stránky obsahují reklamy, že.
#6 SPDY měl několik verzí, současné browsery již starší verze nepodporují. Chrome umí už jen verzi 3.1, Firefox umí 3.0 i 3.1. IE 11 umí SPDY/3, ale jen na Win8 a občas to blbne.
#7 Chrome začátkem roku 2016 zcela odstraní podporu SPDY právě ve prospěch HTTP/2. Chrome už HTTP/2 umí, v nastavení je ale pojmenovaná jako SPDY/4, což je prý to samé.
#8 Podpora na hlavních serverech je zatím trochu mizerná. nginx prý implementuje HTTP/2 do konce roku 2015 (aktualizace: v září 2015 vyšel nginx s podporou HTTP/2, zatím bez podpory Server Push, viz dále), Apache HTTP/2 standardně neumí, ale existuje pro něj neoficiální rozšíření (aktualizace: v říjnu 2015 vyšel Apache 2.4.17 s podporou HTTP/2).
#9 Na konci ledna 2015 měl Google na svých serverech 5 % všech přístupů pomocí HTTP/2, ale teď to bude mnohem více. HTTP/2 umí Firefox i Chrome a oba ho pro přístup na Google používají.
#10 Nutno dodat, že HTTP/2 byl sice již dokončen, ale ještě nebyl „schválen.“ Zatím existuje ve verzi draft 17, která je označovaná jako h2-17
, Chrome a Firefox podporují verzi draft 14 a 15. (Aktualizace: protokol byl v květnu 2015 „schválen“, viz RFC 7540 a RFC 7541.)
#11 Protokol HTTP/2 se od starších verzí liší například tím, že je binární. Rychleji se tedy parsuje i přenáší. Do textové reprezentace pro zobrazení v debuggerech se překládá.
#12 V HTTP/1.1 se doporučovalo statický obsah dávat na samostatné domény, aby se zbytečně v požadavcích na obrázky nepřenášely cookies, které někdy mohly mít v součtu i třeba pár desítek kilo.
#13 HTTP/2 komprimuje i hlavičky a tedy i cookies. Používá na to vlastní algoritmus HPACK. Starší SPDY používalo GZIP, ale kvůli útoku CRIME se musel vymyslet nový algoritmus.
#14 Už HTTP/1.1 umělo v jednom spojení poslat více požadavků zároveň, ale odpověď musela přijít ve stejném pořadí, jako odešly požadavky. Podpora v browserech je ale dost špatná.
#15 HTTP/2 umí v jednom spojení na server poslat více požadavků, přičemž nezáleží na pořadí odpovědí. Jednotlivé části požadavků nebo odpovědí se mohou dokonce míchat mezi sebou.
#16 Když browser stáhne stránku, tak ji musí začít parsovat, aby mohl poslat další požadavky na server pro obrázky apod. HTTP/2 server mu tyhle věci může natlačit předem do cache. (Aktualizace: Apache umí Server Push od verze 2.4.18, nginx Server Push zatím neumí.)
#17 Jednu chvíli to vypadalo, že HTTP/2 bude šifrované spojení vyžadovat, že všechno poběží na TLS a nebude tedy jednoduché provádět odposlechy nebo modifikovat stahovaná data.
#18 Ale není tomu tak, HTTP/2 má i nešifrovanou variantu, označovanou jako h2c
– cleartext. Google a Mozilla ale tuto variantu do svých prohlížečů neplánují implementovat.
#19 Google má v zásobě ještě jeden protokol, říká mu QUIC. Je to v podstatě obdoba SPDY, ale funguje na protokolu UDP. Podporuje ho Chrome a používá ho při přístupu na servery Google.
#20 A co to všechno pro webové vývojáře znamená? No, budete moci konečně přestat spojovat obrázky dohromady. Ale asi až za pár dlouhých let.