back-end process, delays all other resources (see Figure 5).
SPDY implements pipelining without HTTP’s head-of-line blocking limitation. Resources transferred through
a SPDY connection are carried in annotated “streams,” or independent sequences of bidirectional data divided
into frames; annotated streams allow
SPDY to not only return resources in
any order but interleave resources over
a single TCP connection7 (see Figure 6).
SPDY also includes request prioritization, allowing the client to specify
that certain resources be returned with
a higher priority than others. Unlike
many quality-of-service mechanisms
that work on prioritizing packets in
queues at lower layers in the network
stack, SPDY prioritization works at the
application layer, designed to allow
the client to specify what is important.
One use of prioritization is to request
that resources that block progressive
page rendering (such as cascading
style sheets and JavaScript) be returned
with higher priority. Another use of prioritization is to increase the priority of
resources being downloaded for the
currently visible browser tab while decreasing priority of resources belonging to a currently loading but hidden
tab. A further implication of implementing priority at the application
layer is that a server can, at least theoretically, prioritize not only the order in
which resources are transmitted over
the wire but also the order in which resources are generated on the back-end
if the task is time intensive.
Header compression. HTTP requests
and responses all include a set of HTTP
headers that provide additional infor-
mation about the request or response
(see Figure 7). There is significant re-
dundancy in these headers across re-
quests and responses; for example,
the “User-Agent” header describing
the user’s browser (such as Mozilla/5.0
compatible, MSIE 9.0, Windows NT
6. 1, WOW64, and Trident/5.0 for In-
ternet Explorer 9) is sent to the server
many times over. Likewise, cookie
headers, which describe state infor-
mation about the client, are repeated
many times over across requests. Such
redundancy means HT TP headers tend
to compress relatively effectively. To
further improve compression, SPDY
seeds an out-of-band compression dic-
tionary based on a priori knowledge of
common HTTP headers. 29
figure 3. Global browser usage share, as recorded by statcounter ( http://gs.statcounter.
com/#browser-ww-monthly-201103-201202); in february 2012, chrome had 29.84% and
firefox 24.88%.
IE
Firefox
Opera Safari Chrome
Top five browsers, Feb. 2011 to Feb. 2012
Other (dotted)
50%
40%
30%
20%
10%
April 2011
May 2011
June 2011
0%
July 2011
M arch 2011
Oct.2011
Jan.2012
J uly 2 0 11
Sept. 2011
N ov. 2 0 1 1
Dec.2011
Feb. 2 012
figure 4. httP pipelining allows multiple concurrent requests, reducing the number of
round trips to the server.
no pipelining
pipelining
client
server
client
server
december 2012 | vol. 55 | no. 12 | communications of the acm 67