SPDY
SPDYje experimentální síťovýprotokol,který je vyvíjen jako součást otevřenéhoprojektu Chromiumpod záštitouGooglu. [1] Hlavním cílem protokolu je snaha o zajištění rychlejšího načítáníwebových stránekpomocí úpravy funkčnosti protokoluHTTP. [2]SPDYrelaceje realizována uvnitř spolehlivéhotransportníhoprotokolu, napříkladTCPa pro své fungování vyžaduje implementaci naklientskéiserverovéstraně. [2]SPDY je implementován vprohlížečíchChromium/Chrome [3],Opera[4],Mozilla Firefox [5]aInternet Explorer.Protokol je implementován také v jejich mobilních protějšcích. [6][7][8]Autoři naměřili až 64% zkrácení doby potřebné k načtení stránky[1]a při úpravě parametrů TCP až 78%. Průměr zrychlení byl 29%.[9]
Vývojáři SPDY se zapojili do vytvoření standarduHTTP/2.0,který byl v únoru roku 2015 předložen k ratifikaci. Společnost Google oznámila ukončení podpory protokolu SPDY v roce2016ve prospěch nového HTTP/2.0 standardu. [10]
Problémy s rychlostí protokolu HTTP[1]
[editovat|editovat zdroj]- Přes otevřené spojení se přenese pouze jeden dotaz. HTTP nepřenáší elementy paralelně a otevřený TCP kanál čeká na přijetí odpovědi. Dosavadní řešení problému prohlížeči je otevření několika TCP spojení s daným serverem zároveň.
- Pouze klient rozhodne, která data si vyžádá. HTTP server nemá prostředky pro posílání dat klientovi, aniž by si je klient vyžádal. Při komunikaci jsou případy, kdy server ví, že klient bude potřebovat určitá data, ale nemůže je doručit, ani klienta informovat o jejich dostupnosti.
- Nekomprimovanéhlavičkydotazů.Hlavičky mohou mít velikost až 2KiB. Moderníwebové aplikacepoužívají vícecookiesawebová odezvapomalých spojení značně trpí.
- Nadbytečné hlavičky. Některé hlavičky jsou v jednom spojení posílány vícekrát, přestože informace v nich obsažené jsou často statické a nepotřebují být obnovovány.
- Nepovinná komprese dat. HTTP volitelně podporuje kompresi dat, ale ne všechnywebové serveryjí používají.[11]
Vlastnosti[1]
[editovat|editovat zdroj]SPDY přidává relaci nad vrstvouSSL,která umožňuje vícemultiplexovanýchspojení skrze jedno TCP spojení. Syntaxe HTTP metod GET a POST zůstává nezměněna pouze se definuje novýrámecpro přenos dat. SPDY poskytuje několik povinných a nepovinných funkcionalit.
Povinné funkcionality
[editovat|editovat zdroj]Multiplexované spojení
[editovat|editovat zdroj]- SPDY podporuje neomezený počet souběžných toků dat skrze jediné TCP spojení. Efektivita spojení je maximalizována, protože jsou jednotlivé dotazy posílány zároveň. Sníží se tím také počet TCP spojení k jednomu web serveru.
Priorita dotazování
[editovat|editovat zdroj]- S multiplexem je spojen problém priority. Při pomalém spojení může dojít k zadrženípaketů,které klient nutně potřebuje. SPDY implementuje prioritu dotazů (úrovně 0 až 7)[2],která tento problém efektivně řeší.
Komprimace hlaviček
[editovat|editovat zdroj]- Komprimace hlaviček je vždy zapnutá a snižuje se tím počet odeslaných dat. Hlavičky jsou vždy komprimovány pomocí kompresezlib.[2][12]
Nepovinné funkcionality
[editovat|editovat zdroj]Server push
[editovat|editovat zdroj]- Na rozdíl od HTTP, může sám server začít odesílat data. V hlavičce předá klientovi informaci, že začne odesílat data, která si klient ještě nevyžádal. Toto opatření může značně zrychlit načítání stránek, které klient ještě nenavštívil. Pokud má již klient data vpamětipak je odeslání zbytečné, rozhodnutí o odeslání dat náleží jenom serveru, jelikož protokol neposkytuje informace o datech která jsou uloženy u klienta.[13]
Server hint
[editovat|editovat zdroj]- Server má možnost, místo aktivního odesílání dat, pouze informovat klienta o potřebných datech. Klient pak může rychleji zareagovat vlastním dotazem. Při pomalém spojení klient rychleji zjistí, která data potřebuje, ještě před tím než by se mu stáhl předchozí dotaz.
Reference
[editovat|editovat zdroj]- ↑abcd SPDY white paper[online]. dev.chromium.org [cit. 2013-06-16].Dostupné online.(anglicky)
- ↑abcdSPDY protokol[online]. IETF, 2012-02 [cit. 2013-06-16].Dostupné online.(anglicky)
- ↑Zdrojový kod implementace SPDY v prohlížeči Chromium[online]. chromium.org [cit. 2013-06-16].Dostupné online.
- ↑Opera 12.10[online]. webmonkey.com, 2012-10-03 [cit. 2013-06-16].Dostupné v archivupořízeném dne 2013-05-27.
- ↑MozillaWiki SPDY[online]. mozilla.org [cit. 2013-06-16].Dostupné online.(anglicky)
- ↑Komprese dat v Chrome Mobile[online]. developers.google.com [cit. 2013-06-16].Dostupné v archivupořízeném dne 2013-05-07. (anglicky)
- ↑Opera Mobile pro Android dostala 'SPDY'[online]. webmonkey.com, 2012-10-09 [cit. 2013-06-16].Dostupné v archivupořízeném dne 2013-05-27. (anglicky)
- ↑Changelog pro Firefox for Android verze 19[online]. mozilla.org [cit. 2013-06-16].Dostupné online.(anglicky)
- ↑Analýza SPDY[online]. IETF, 2012-07-06 [cit. 2013-06-16].Dostupné online.(anglicky)
- ↑Chris Bentzel and Bence Béky.Hello HTTP/2, Goodbye SPDY[online]. Google, 9 February 2015.Dostupné online.
- ↑Průzkum HTTP komprese z roku 2010[online]. port80software.com, 2010 [cit. 2013-06-17].Dostupné online.(anglicky)
- ↑RFC 1950- zlib formát[online]. IETF, 1996-03 [cit. 2013-06-17].Dostupné online.(anglicky)
- ↑Server Push a Server Hint[online]. dev.chromium.org [cit. 2013-06-17].Dostupné online.(anglicky)
Související články
[editovat|editovat zdroj]Externí odkazy
[editovat|editovat zdroj]- Dokumentace protokolu SPDY– od autorů (anglicky)
- IETF HTTP 2.0 draft– jako součástí standardizačního procesu HTTP 2.0 (anglicky)