Chapter 6. The Need for Parallelism in HTTP

Brian Pane

Introduction: Falling Down the Stairs

The image on Figure 6-1 is part of a waterfall diagram showing the HTTP requests that an IE8 browser performed to download the graphics on the home page of an e-commerce website.

Note

The site name and URLs are blurred to conceal the site’s identity. It would be unfair to single out one site by name as an example of poor performance when, as we’ll see later, so many others suffer the same problem.

Stair-step waterfall pattern

Figure 6-1. Stair-step waterfall pattern

The stair-step pattern seen in this waterfall sample shows several noteworthy things:

  • The client used six concurrent, persistent connections per server hostname, a typical (http://www.browserscope.org/?category=network) configuration among modern desktop browsers.

  • On each of these connections, the browser issued HTTP requests serially: it waited for a response to each request before sending the next request.

  • All the requests in this sequence were independent of each other; the image URLs were specified in a CSS file loaded earlier in the waterfall. Thus, significantly, it would be valid for a client to download all these images in parallel.

  • The round-trip time (RTT) between the client and server was approximately 125ms. Thus many of these requests for small objects took just over 1 RTT. The elapsed time the browser spent downloading all N of the small images ...

Get Web Performance Daybook Volume 2 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.