### 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