SPDY

SPDY je experimentální síťový protokol, který je vyvíjen jako součást otevřeného projektu Chromium pod záštitou Googlu. [1] 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. [2] 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ě. [2] SPDY je implementován v prohlížečích Chromium/Chrome [3], Opera[4], Mozilla Firefox [5] a Internet 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í standardu HTTP/2.0, který byl v únoru roku 2015 předložen k ratifikaci. Společnost Google oznámila ukončení podpory protokolu SPDY v roce 2016 ve prospěch nového HTTP/2.0 standardu. [10]

Problémy s rychlostí protokolu HTTP[1]

  • 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]

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

Multiplexované spojení

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í

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

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.[2][12]

Nepovinné funkcionality

Server push

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

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

  1. a b c d SPDY white paper [online]. dev.chromium.org [cit. 2013-06-16]. Dostupné online. (anglicky) 
  2. a b c d SPDY protokol [online]. IETF, 2012-02 [cit. 2013-06-16]. Dostupné online. (anglicky) 
  3. Zdrojový kod implementace SPDY v prohlížeči Chromium [online]. chromium.org [cit. 2013-06-16]. Dostupné online. 
  4. Opera 12.10 [online]. webmonkey.com, 2012-10-03 [cit. 2013-06-16]. Dostupné v archivu pořízeném dne 2013-05-27. 
  5. MozillaWiki SPDY [online]. mozilla.org [cit. 2013-06-16]. Dostupné online. (anglicky) 
  6. Komprese dat v Chrome Mobile [online]. developers.google.com [cit. 2013-06-16]. Dostupné v archivu pořízeném dne 2013-05-07. (anglicky) 
  7. Opera Mobile pro Android dostala 'SPDY' [online]. webmonkey.com, 2012-10-09 [cit. 2013-06-16]. Dostupné v archivu pořízeném dne 2013-05-27. (anglicky) 
  8. Changelog pro Firefox for Android verze 19 [online]. mozilla.org [cit. 2013-06-16]. Dostupné online. (anglicky) 
  9. Analýza SPDY [online]. IETF, 2012-07-06 [cit. 2013-06-16]. Dostupné online. (anglicky) 
  10. Chris Bentzel and Bence Béky. Hello HTTP/2, Goodbye SPDY [online]. Google, 9 February 2015. 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

Externí odkazy