Today’s World Wide Web just isn’t the same as it was decades ago when it was first invented. With the advent of two-way interaction, embedded applets and bulky client-side scripts, Web traffic has become much more congested than back in the “good ol’ days” of plain HTML. This is the primary reason why Google has been working on their new experimental application-layer protocol, SPDY. Pronounced “speedy,” the new SPDY protocol is designed with one major goal in mind, namely to reduce web page load time.
Although HTTP has served the Internet community well, it simply wasn’t designed with latency as a major concern; the demands placed upon it now could not have been anticipated when it was first created. Since HTTP can only retrieve one resource at a time, browsers have to use multiple connections in order to create multiple requests. HTTP is further limited by only allowing the client to initiate a request, even if the server already knows the client needs a particular resource. There is no mechanism within the HTTP protocol that allows a server to initiate requests, thus forcing the server to wait until the client performs a resource request of its own.
Page times are less than optimal with HTTP due to its use of uncompressed request and response headers. When HTTP was first created, headers were fairly small. Today’s average HTTP header, unfortunately, can reach well over 2KB in size due to increased cookie use and expanded user agent features. Redundant headers only serve to exacerbate the problem, as static headers like Accept, Host and User-Agent are sent repeatedly.
The developers of the SPDY networking protocol aim to eliminate these issues and reduce page load time by 50 percent. They plan to achieve this without having to make any changes to networking infrastructures or website content. The only changes required to support SPDY are changes made within web server applications and the client user agents that communicate with them. SPDY accomplishes exactly this by adding a session layer on top of SSL that allows for multiple concurrent, interleaved streams over just one TCP connection. Even though standard HTTP GET and POST messages formats are still used, SPDY requires the use of a new framing format for encoding and “over the wire” data transmission. Unlike with standard HTTP, SPDY streams are bi-directional. They can even be initiated by the server.
SPDY is currently supported by Google Chrome and Mozilla Firefox. Amazon’s Silk browser, found on the Kindle Fire Android tablet, even uses SPDY to communicate with Amazon EC2 to improve web page rendering. Support within the Opera browser is currently being tested under beta release. Although not a panacea, SPDY does show promise for reducing page load times and improving the user’s overall web browsing experience.