up connections, use a slow initial rate
of data exchange, and recover slowly
from packet loss. In contrast, a network that uses persistent connections
and optimizes parameters for efficiency (given knowledge of current network
conditions) can significantly improve
performance by reducing the number
of round-trips needed to deliver the
same set of data.
Optimization 2: Find better routes.
In addition to reducing the number
of round-trips needed, we would also
like to reduce the time needed for each
round-trip—each journey across the
Internet. At first blush, this does not
seem possible. All Internet data must
be routed by BGP and must travel over
numerous autonomous networks.
BGP is simple and scalable but not
very efficient or robust. By leveraging a
highly distributed network—one that
offers potential intermediary servers
on many different networks—you can
actually speed up uncacheable communications by 30% to 50% or more, by
using routes that are faster and much
less congested. You can also achieve
much greater communications reli-
ability by finding alternate routes
when the default routes break.
Optimization 3: Prefetch embedded content. You can do a number of
additional things at the application
layer to improve Web application responsiveness for end users. One is to
prefetch embedded content: while
an edge server is delivering an HTML
page to an end user, it can also parse
the HTML and retrieve all embedded
content before it is requested by the
end user’s browser.
The effectiveness of this optimization relies on having servers near end
users, so that users perceive a level of
application responsiveness akin to
that of an application being delivered
directly from a nearby server, even
though, in fact, some of the embedded
content is being fetched from the origin server across the long-haul Internet. Prefetching by forward caches, for
example, does not provide this performance benefit because the prefetched
content must still travel over the middle mile before reaching the end user.
Also, note that unlike link prefetching
(which can also be done), embedded
content prefetching does not expend
extra bandwidth resources and does
not request extraneous objects that
may not be requested by the end user.
With current trends toward highly
personalized applications and user-generated content, there’s been growth
in either uncacheable or long-tail (that
is, not likely to be in cache) embedded
content. In these situations, prefetching makes a huge difference in the us-er-perceived responsiveness of a Web
application.
Optimization 4: Assemble pages at the
edge. The next three optimizations involve reducing the amount of content
that needs to travel over the middle
mile. One approach is to cache page
fragments at edge servers and dynamically assemble them at the edge in response to end-user requests. Pages can
be personalized (at the edge) based on
characteristics including the end user’s location, connection speed, cookie values, and so forth. Assembling the
page at the edge not only offloads the
origin server, but also results in much
lower latency to the end user, as the
middle mile is avoided.
feBRuaRY 2009 | vol. 52 | No. 2 | CommunICatIons of the aCm
49