HTTP ドキュメントは、ほかのプロトコルのドキュメントにはないキャッシュ機能を備えています。ただし、キャッシュを正しくセットアップし、設定することで、プロキシサーバーでの HTTP、FTP、および Gopher の各ドキュメントを効果的にキャッシュできるようになります。
Proxy Server 4 は HTTPS ドキュメントのキャッシュをサポートしていません。
HTTP ドキュメントにはすべて詳細ヘッダーセクションがあり、プロキシサーバーはこのセクションを使用してプロキシキャッシュ内のドキュメントとリモートサーバー上のドキュメントを比較し、評価します。プロキシが HTTP ドキュメントに対して最新状態チェックを実行する場合、プロキシはサーバーに 1 つの要求を送信し、キャッシュ内のドキュメントが古ければサーバーにドキュメントを返すように指示します。ドキュメントは最後の要求から、変更されていないことが多く、したがって転送されません。このような HTTP ドキュメントの最新状態チェックにより、帯域幅が節約され、遅延が減少します。
リモートサーバーとのトランザクションを減らすために、プロキシサーバーで HTTP ドキュメント用にキャッシュ有効期限設定を設定できます。キャッシュ有効期限設定では、サーバーに要求を送信する前に HTTP ドキュメントの最新状態チェックが必要かどうかを評価するようにプロキシに情報を提供します。プロキシはこの評価を、ヘッダー内の HTTP ドキュメントが最後に変更された (Last-Modified) 日付に基づいて行います。
HTTP ドキュメントでは、キャッシュ更新設定も使用できます。このオプションは、プロキシが常に最新状態チェックを行うかどうか (有効期限の設定がオーバーライドされる)、プロキシが一定期間待機してからチェックを行うかどうかを指定します。次の表に、有効期限設定と更新設定の両方を指定した場合のプロキシの動作を示します。更新設定を使用すると、遅延が減り、帯域幅を大幅に節約できます。
表 12–1 HTTP でのキャッシュ有効期限設定とキャッシュ更新設定の使用
更新の設定 |
有効期限の設定 |
結果 |
---|---|---|
常に最新状態チェックを行う |
(適用なし) |
常に最新状態チェックを行う |
ユーザー指定の間隔 |
ドキュメントの「expires」ヘッダーを使用 |
更新期間が過ぎれば最新状態チェックを行う |
ドキュメントの Last-Modified ヘッダーで評価 |
評価および expires ヘッダーに小さな値を設定* |
* 小さな値を使用すると、ドキュメントが頻繁に変更されるため、キャッシュのデータが古くなりません。
プロキシサーバーで HTTP ドキュメントのキャッシュを行うことにした場合、プロキシサーバーでキャッシュ内のドキュメントの最新状態チェックを常に行うか、あるいはプロキシサーバーでキャッシュ更新設定 (最新状態チェックの間隔) に基づいてチェックを行うかを指定する必要があります。HTTP ドキュメントの場合、更新間隔は 4 〜 8 時間が適当です。更新間隔を長くすると、プロキシがリモートサーバーに接続する回数が少なくなります。プロキシが次の更新までの間に最新状態チェックを行わない場合でも、クライアントで「Reload」ボタンをクリックすると更新を実行できます。この操作により、プロキシはリモートサーバーで強制的に最新状態チェックを実行します。
HTTP ドキュメントの更新間隔は、「Set Cache Specifics」ページまたは「Set Caching Configuration」ページで設定できます。「Set Cache Specifics」ページでは、グローバルなキャッシュプロシージャーを設定できます。また「Set Caching Configuration」ページでは、特定の URL およびリソースのキャッシュプロシージャーを制御できます。
また、Last-Modified 要素または明示的な有効期限情報のみを使用して、キャッシュされたドキュメントが最新かどうかを確認するようにサーバーを設定できます。
明示的な有効期限情報とは、一部の HTTP ドキュメント内にある、ファイルが期限切れになる日時を指定するヘッダーです。明示的な Expires ヘッダーを使用する HTTP ドキュメントは多くないため、Last-modified ヘッダーに基づいて評価してください。
HTTP ドキュメントを Last-modified ヘッダーに基づいてキャッシュすることを決定した場合、有効期限の評価で使用する割合を選択する必要があります。LM 要素として知られるこの割合に、最後の変更からドキュメントで最後に最新状態チェックが実行された時間までの間隔を乗算します。この結果の数字を、最後の最新状態チェックからの経過時間と比較します。この数字が間隔時間よりも小さい場合、ドキュメントの期限は切れていません。割合が小さくなると、プロキシのドキュメントチェックの頻度が高くなります。
たとえば、最後の変更が 10 日前に行われたドキュメントを考えてみます。Last-Modified 要素を 0.1 に設定した場合、プロキシはこの要素の意味を、ドキュメントが 1 日 (10 * 0.1 = 1) の間変更されない、と解釈します。その場合、ドキュメントのチェックが 1 日以内に実行されている場合、プロキシはキャッシュからドキュメントを返します。
同じ例で、HTTP ドキュメントのキャッシュ更新設定が 1 日未満に設定された場合、プロキシは 1 日に何度か最新状態チェックを実行します。プロキシは常に、ファイルがより頻繁に更新される値 (キャッシュの更新またはキャッシュの有効期限) を使用します。
HTTP ドキュメントの有効期限設定は、「Set Cache Specifics」ページまたは「Set Caching Configuration」ページで設定できます。「Set Cache Specifics」ページでは、グローバルなキャッシュプロシージャを設定できます。また「Set Caching Configuration」ページでは、特定の URL およびリソースのキャッシュプロシージャを制御できます。
Sun Java System Web Proxy Server でドキュメントがキャッシュされると、そのドキュメントには再度更新されるまでに、何度もアクセスできます。リモートサーバーの場合、プロキシにコピーを 1 つ送信し、プロキシがそれをキャッシュする動作が 1 回のアクセス、すなわち「ヒット」になります。プロキシサーバーは、指定されたドキュメントが現在の最新状態チェックから次のチェックまでの間にプロキシキャッシュからアクセスされた回数をカウントし、次回ドキュメントが更新されるときに追加 HTTP 要求ヘッダー (Cache-Info) でそのヒットカウントをリモートサーバーに送信します。このように、リモートサーバーがこの種類のヘッダーを認識するように設定されていれば、リモートサーバーはドキュメントのアクセス回数をより正確に受信できます。