Web Server Capabilities

Mark Nottingham
mnot@pobox.com

Products which use HTTP/1.1 have been demonstrated to run significantly faster than those which do not. I urge everyone to check for HTTP/1.1 compliance when choosing software.”
- Tim Berners-Lee, upon the approval of HTTP/1.1 as a Draft Standard on http://www.w3.org/

Although most popular Web servers now claim HTTP/1.1 compliance, it is unclear to what extent they support the enhanced features of the protocol, or how consistently they do so.

Specifically, I’m interested in the consistency of support for protocol features with generated content— that is, content that the server must process before serving, either through an external or internal process.

Anecdotal evidence suggests that such content doesn’t enjoy full protocol support; this is borne out by Wills’ study, which found that roughly a third of HTML representations examined did not have a validator associated with them, even though they did not change.

Understanding these issues is vital to making the Web work efficiently, as more Web sites use such non-traditional means of managing content.

To further explore the level of support offered, I undertook a survey of current Web servers[pdf], to test for protocol compliance, with a focus on caching and other performance-enhancing mechanisms.

Scope

Because a server can source content by any of several methods (such as CGI, SSI, ASP, JSP and Cold Fusion, to name a few), I decided to work at a higher granularity than by-server. A few widely-deployed servers were chosen and divided into the various content delivery mechanisms that they implement.

The primary protocol features tested for were:

Methodology

During testing, all requests were HTTP/1.1, except for Content-Length based persistent connections.

Notes

In the publisher and administrator control categories, partial support in the “Expires” or “Cache-Control” fields indicatest that support for that function is through the “arbitrary headers” function; in other words, the header must be entered manually.

The interfaces cited for setting these parameters are described below.

Other notes about support and individual behaviours are in the “Notes” column.

Observations

The survey results clearly illustrate that support for “core” protocol features such as validation, persistent connections and partial content is available in most servers, but is not consistent across all requests served by them. Additionally, publishers are not offered a consistent, easy-to-use method of assigning metadata to resources.

Particularly, although static content is fairly well covered, support for persistent connections, validation and partial responses falls off dramatically for generated content, even when using a dedicated server (such as Domino or Zope).