SPDY

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

SPDY je experimentální síťový protokol, který je vyvíjen jako součást otevřeného projektu Chromium pod záštitou Googlu. [1] Protokol je součástí návrhu nového standardu HTTP/2.0 [2], který by měl být dokončen na konci roku 2014. [3] Hlavním cílem protokolu je snaha o zajištění rychlejšího načítání webových stránek pomocí úpravy funkčnosti protokolu HTTP. [4] SPDY relace je realizována uvnitř spolehlivého transportního protokolu, například TCP a pro své fungování vyžaduje implementaci na klientské i serverové straně. [4] SPDY je implementován v prohlížečích Chromium/Chrome [5], Opera[6], Mozilla Firefox [7] a Internet Explorer. Protokol je implementován, také v jejich mobilních proťějšcích. [8][9][10] 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%.[2]

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čky dotazů. Hlavičky mohou mít velikost až 2KiB. Moderní webové aplikace používají více cookies a webová odezva pomalý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šechny webové servery jí používají.[11]

Vlastnosti[1][editovat | editovat zdroj]

SPDY přidává relaci nad vrstvou SSL, která umožňuje více multiplexovaných spojení skrze jedno TCP spojení. Syntaxe HTTP metod GET a POST zůstává nezměněna pouze se definuje nový rámec pro 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)[4], 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í komprese zlib.[4][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 v paměti pak 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]

  1. a b c d SPDY white paper [online]. dev.chromium.org, [cit. 2013-06-16]. Dostupné online. (anglicky) 
  2. a b Analýza SPDY [online]. IETF, 2012-07-06, [cit. 2013-06-16]. Dostupné online. (anglicky) 
  3. httpbis [online]. IETF, [cit. 2013-06-16]. Dostupné online. (anglicky) 
  4. a b c d SPDY protokol [online]. IETF, 2012-02, [cit. 2013-06-16]. Dostupné online. (anglicky) 
  5. Zdrojový kod implementace SPDY v prohlížeči Chromium [online]. chromium.org, [cit. 2013-06-16]. Dostupné online.  
  6. Opera 12.10 [online]. webmonkey.com, 2012-10-03, [cit. 2013-06-16]. Dostupné online.  
  7. MozillaWiki SPDY [online]. mozilla.org, [cit. 2013-06-16]. Dostupné online. (anglicky) 
  8. Komprese dat v Chrome Mobile [online]. developers.google.com, [cit. 2013-06-16]. Dostupné online. (anglicky) 
  9. Opera Mobile pro Android dostala 'SPDY' [online]. webmonkey.com, 2012-10-09, [cit. 2013-06-16]. Dostupné online. (anglicky) 
  10. Changelog pro Firefox for Android verze 19 [online]. mozilla.org, [cit. 2013-06-16]. Dostupné online. (anglicky) 
  11. Průzkum HTTP komprese z roku 2010 [online]. port80software.com, 2010, [cit. 2013-06-17]. Dostupné online. (anglicky) 
  12. RFC 1950 - zlib formát [online]. IETF, 1996-03, [cit. 2013-06-17]. Dostupné online. (anglicky) 
  13. 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]