The Keep-Alive extension to HTTP, as defined by the HTTP/1.1
draft, allows persistent connections. These long-lived HTTP sessions allow multiple requests to be send over the same TCP connection, and in some cases have been shown to result in an almost 50% speedup in latency times for HTML documents with lots of images.
Apache 1.1 comes with Keep-Alive support on by default, however there are some directives you can use to modify Apache's behavior:
Note: Apache 1.2 uses a different syntax for the KeepAlive directive.
KeepAlive max-requests
Default: KeepAlive 5
Context: server config
Status: Core
This directive enables Keep-Alive support. Set max-requests to the maximum number of requests you want Apache to entertain per connection. A limit is imposed to prevent a client from hogging your server resources. Set this to 0
to disable support.
KeepAliveTimeout seconds
Default: KeepAliveTimeout 15
Context: server config
Status: Core
The number of seconds Apache will wait for a subsequent request before closing the connection. Once a request has been received, the timeout value specified by the Timeout
directive applies.
In order for Keep-Alive support to be used, first the browser must support it. Many current browsers, including Netscape Navigator 2.0, and Spyglass Mosaic-based browsers (including Microsoft Internet Explorer) do. Note, however, that some Windows 95-based browsers misbehave with Keep-Alive-supporting servers; they may occasionally hang on a connect. This has been observed with several Windows browsers, and occurs when connecting to any Keep-Alive server, not just Apache. Netscape 3.0b5 and later versions are known to work around this problem.
However, Keep-Alive support only is active with files where the length is known beforehand. This means that most CGI scripts, server-side included files and directory listings will not use the Keep-Alive protocol. While this should be completely transparent to the end user, it is something the web-master may want to keep in mind.