Wat is SPDY?

13 augustus, 2014
Vragen & antwoorden
Servers, SPDY, HTTP, HTTPS

SPDY (uitgesproken als: speedy) is een door een team van Google ontwikkelde aanvulling op het veelgebruikte maar sterk verouderde HTTP-protocol uit 1999. Het doel van het SPDY-project is om de huidige nadelen van HTTP versie 1.1 zoveel mogelijk op te heffen, met name op het gebied van snelheid.

HTTP, ofwel het HyperText Transfer Protocol, werd ontwikkeld in een tijd waarin webpagina's nog relatief eenvoudig waren en uit weinig elementen bestonden, en internetverbindingen langzamer waren. Tegenwoordig bevat de gemiddelde webpagina ruim honderd elementen, met een totale grootte van meer dan een megabyte, en zijn snelle breedbandverbindingen in veel landen zoals Nederland vrijwel overal beschikbaar. In het ontwerp van HTTP is daar geen rekening mee gehouden, en dus kan het protocol niet efficiënt omgaan met zoveel data zonder in de overdracht veel vertraging op te lopen.

SPDY is als het ware een verpakking om HTTP. Op deze manier kan het de wijze waarop HTTP-gegevens geëncodeerd en verzonden worden optimaliseren. Het heeft drie basiseigenschappen die hieraan bijdragen: multiplexing, prioritisering van verzoeken, en compressie van HTTP-headers. Daar komt bij dat SPDY standaard en exclusief via HTTPS werkt, en dus tevens de uitgewisselde gegevens met behulp van encryptie beveiligt.

Waar HTTP slechts één verzoek per TCP-verbinding tegelijkertijd kan verwerken, kan SPDY met behulp van een techniek die multiplexing heet, een onbeperkt aantal gegevensstromen tegelijkertijd, en dus door elkaar heen in plaats van één voor één, verzenden en verwerken.

Omdat niet alle elementen op een pagina even essentieel zijn, kan een web browser of andere client met SPDY aangeven welk type bestanden het als eerste wil binnenhalen. Zo wordt bijvoorbeeld voorkomen dat iemand met een langzame of instabiele internetverbinding lang moet wachten voordat de meest cruciale elementen van een webpagina, zoals tekst en stylesheets, geladen zijn. De prioriteit zal meestal deze vorm krijgen: HTML > JS, CSS > *.

De zogeheten headers van een HTTP-transactie, die gegevens zoals de datum, het content-type, een status-code en andere operationele parameters bevatten, kunnen bovendien door SPDY gecomprimeerd worden, zodat de transactionele overhead van een HTTP-verzoek beperkt wordt.

SPDY wordt inmiddels ondersteund door de meeste web browsers, en ook webservers zoals Apache en nginx maken de implementatie ervan mogelijk. SPDY begon als een onderzoeksproject maar vormt inmiddels de basis voor versie 2 van HTTP, dat ontwikkeld wordt door een werkgroep van de Internet Engineering Task Force (IETF). Naar verwachting zal SPDY op den duur vervangen worden door HTTP/2.0, en is de weg vrij voor verdere verbeteringen.