SPDY
SPDY je experimentální síťový protokol, který je vyvíjen jako součást otevřeného projektu Chromium pod záštitou Googlu.

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.
 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ě.
 SPDY je implementován v prohlížečích Chromium/Chrome
, Opera, Mozilla Firefox
 a Internet Explorer. Protokol je implementován také v jejich mobilních protějšcích.
 Autoři naměřili až 64% zkrácení doby potřebné k načtení stránky a při úpravě parametrů TCP až 78%. Průměr zrychlení byl 29%.

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.

Problémy s rychlostí protokolu HTTP 

 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í.

Vlastnosti 

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), 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.

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.

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

Související články 
 Hypertext Transfer Protocol

Externí odkazy 
 Dokumentace protokolu SPDY – od autorů (anglicky)
 IETF HTTP 2.0 draft – jako součástí standardizačního procesu HTTP 2.0 (anglicky)

Protokoly relační vrstvy