Apache の keep-alive サポート

### Apache HTTP Server

# Apache でサポートする keep-alive

## keep-alive とは

`HTTP/1.1` ドラフトに定義されているように、HTTP の拡張機能である keep-alive によって持続的なコネクションが可能になります。 これらの持続的な HTTP セッションのおかげで、複数のリクエストを同一の TCP コネクションを経由して送信することが可能となります。 多数のイメージを貼り付けてある HTML ドキュメントを送信するときに、 場合によっては、待ち時間がほぼ 50% となるほど速くなることが示されています。

## Keep-Alive のサポートを有効にする

Apache 1.1 ではデフォルトで keep-alive のサポートは有効になっています。 これだけではなく、Apache の動作を変更できるディレクティブが 以下のようにいくつかあります。

注意: Apache 1.2 では KeepAlive ディレクティブの構文は異なります。

### KeepAlive

構文: KeepAlive max-requests
デフォルト: `KeepAlive 5`
コンテキスト: サーバ設定ファイル
ステータス: Core

このディレクティブで keep-alive のサポートを有効にします。 max-requests については Apache に受け入れさせたい 1 コネクション当たりのリクエストの最大数を設定してください。 制限を設けてクライアントにサーバの資源を浪費させないようにします。 サポートを無効にするにはこの項目に `0` を設定してください。

### KeepAliveTimeout

構文: KeepAliveTimeout seconds
デフォルト: `KeepAliveTimeout 15`
コンテキスト: サーバ設定ファイル
ステータス: Core

Apache に後続のリクエストが到着するのを seconds 秒だけ待たせた後、(リクエストが到着しない場合には) コネクションをクローズします。リクエストを受信した場合には、 `Timeout` ディレクティブで指定した timeout 値を適用します。

## keep-alive が使用される場合

keep-alive サポートを使用するには、まず、ブラウザが keep-alive をサポート していなければなりません。現在の多くのブラウザ、例えば Netscape Navigator 2.0 や (Microsoft Internet Explorer などの) Spyglass Mosaic に基づくブラウザはこの機能をサポートしています。しかし、Windows 95 ベースのいくつかのブラウザは、keep-alive をサポートしているサーバに 対して誤動作することに注意してください。これらのブラウザはコネクト 時にハングすることがあります。この誤動作はいくつかの Windows のブラウザに見られ、Apache だけではなく keep-alive をサポートする すべてのサーバとコネクトするときに発生します。Netscape 3.0b5 以降のバージョンについてはこの問題への対処がなされています。

ただし、 keep-alive サポートが有効になるのは、 あらかじめ長さが判明しているファイルに対してのみです。 そのため、大部分の CGI スクリプト、サーバサイドインクルードファイル、 ディレクトリリストでは、keep-alive プロトコルを使用しないことになります。 これはエンドユーザには完全に透過的になっているべきものですが、 ウェブマスタは知っておいた方が良いことでしょう。

### Apache HTTP Server