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]
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)[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.