The SPDY project defines and implements an application-layer protocol for the web which greatly reduces latency. The high-level goals for SPDY are:
* To target a 50% reduction in page load time. Our preliminary results have come close to this target (see below).
* To minimize deployment complexity. SPDY uses TCP as the underlying transport layer, so requires no changes to existing networking infrastructure.
* To avoid the need for any changes to content by website authors. The only changes required to support SPDY are in the client user agent and web server applications.
* To bring together like-minded parties interested in exploring protocols as a way of solving the latency problem. We hope to develop this new protocol in partnership with the open-source community and industry specialists.
Some specific technical goals are:
To allow many concurrent HTTP requests to run across a single TCP session.
To reduce the bandwidth currently used by HTTP by compressing headers and eliminating unnecessary headers.
To define a protocol that is easy to implement and server-efficient. We hope to reduce the complexity of HTTP by cutting down on edge cases and defining easily parsed message formats.
* To make SSL the underlying transport protocol, for better security and compatibility with existing network infrastructure. Although SSL does introduce a latency penalty, we believe that the long-term future of the web depends on a secure network connection. In addition, the use of SSL is necessary to ensure that communication across existing proxies is not broken.
* To enable the server to initiate communications with the client and push data to the client whenever possible.
There is another feature that Google quietly enabled, but it’s apparently not make a big deal for the company. Google enabled SPDY for Chrome in mid-January 2011 in a limited way, but is now running Chrome with SPDY, which replaces portions of HTTP and adds a few features at 100% over its own servers. The result is a dramatically increased page load performance that only works between Chrome (as it includes SPDY support) and Google’s servers (which supports the features for Google sites.) In effect, Google sites should load much faster in Chrome than in any other web browser.
SPDY is designed to overcome the shortcomings of HTTP, which was first documented in 1995 and related to web content that was much simpler than what we are developing and consuming today. Both TCP and HTTP have evolved into a bottleneck of data downloads and are constantly under scrutiny how these protocols can be made much more efficient in today’s world. HTTP is especially criticized for latency issues since HTTP can only fetch on resource at a time and servers cannot communicate with a client without a client request – and even then it can only support six connections at a time in most browsers. HTTP also uses uncompressed and redundant request and response headers. SPDY uses TCP as the underlying transport layer, but addresses some of the key problems in HTTP as far as latency is concerned.