sleep.cgi

While building the examples of this phenomenon, I developed a tool that I've found extremely useful for showing how delayed components affect web pages: sleep.cgi. It's a simple Perl CGI program that takes the following parameters:

sleep

How long (in seconds) the response should be delayed. The default is 0.

type

The type of component to return. Possible values are gif, js, css, html, and swf. The default value is gif.

expires

One of three values: −1 (returns an Expires header in the past), 0 (no Expires header is returned), and 1 (returns an Expires header in the future). The default is 1.

last

A value of −1 returns a Last-Modified header with a date equal to the file's timestamp. A value of 0 results in no Last-Modified header being returned. The default is −1.

redir

A value of 1 causes a 302 response that redirects back to the exact same URL with redir=1 removed.

The first example requires some slow images and a slow stylesheet. Those are achieved with the following requests to sleep.cgi:

<img src="/bin/sleep.cgi?type=gif&sleep=2&expires=-1&last=0">
<link rel="stylesheet" href="/bin/sleep.cgi?type=css&sleep=1&expires=-1&last=0">

Both the image and stylesheet use the expires=−1 option to get a response that has an Expires header in the past. This prevents the components from being cached so that you can run the test repeatedly and get the same experience each time (I also add a unique timestamp to each component's URL to further prevent caching). In order to reduce the variables ...

Get High Performance Web Sites 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.