キャッシュ機能説明書 (統合環境設定編)
|
目次
索引
|
2.3 キャッシュ機能
PROXYサーバには、クライアントがサーバから取得したデータをPROXYサーバ上のローカルディスク上に一時的に格納(キャッシュ)しておく機能があります。
これにより、同一データへのアクセスは、サーバにアクセスすることなく、ローカルディスク上に格納しているデータをクライアントに転送することで、高速な応答を得ることができます。これをキャッシュ機能といいます。
図2.9にその概要を示します。
図2.9 キャッシュ機能の概要
InfoProxyのキャッシュ機能には次のような機能があります。
- HTTPキャッシュ制御機能
WWWクライアントから、HTTP PROXY機能、または、リバースPROXY機能を利用して、WWWサーバから取得したデータをキャッシュします。これにより、WWWサーバへ接続することなくWWWクライアントへ高速な応答を実現します。
[備考]
- HTTPキャッシュ制御機能では、以下の条件の場合、キャッシュの採取を行いません。
- リクエストのメソッドがGET以外の場合
- HTTPプロトコルのバージョンが"0.9"の場合
- リクエストにWWW認証の情報(ユーザ名、パスワード)が含まれる場合
- クライアントからのリクエストヘッダに"Cache-Control: no-store"が存在する場合
- サーバからのレスポンスヘッダに"Pragma: no-cache"が存在する場合
- サーバからのレスポンスヘッダに"Cache-Control: no-cache"、"Cache-Control: no-store"または"Cache-Control: private"が存在する場合
- サーバからのレスポンスヘッダにSet-Cookieヘッダが存在する場合
- サーバからのレスポンスヘッダにVaryヘッダが存在する場合
- サーバからの応答のステータスコードが"200"以外の場合
- リクエストのURLが、URL単位のキャッシュ制御のキャッシュ採取しないURLの設定と一致する場合
デフォルトの設定では、リクエストのURLに"/cgi-bin/"、"?"の文字列が含まれる場合、キャッシュ採取しない設定になっています。この設定は変更することが可能です。
- サーバからの応答に最終更新時間がない場合
設定によりキャッシュを採取することも可能です。
- FTPキャッシュ制御機能
WWWクライアントからFTP PROXY機能、または、FTPクライアントからFTP中継機能を使用して、anonymous FTPサーバから取得したデータをキャッシュします。 FTP中継では、FTPサーバから取得したファイルとファイルのリストがキャッシュされます。
キャッシュしたファイルは、FTP PROXY機能とFTP中継機能の間で互いに共用されます。そのため、WWWクライアントからのアクセスでキャッシュされたファイルをFTPクライアントからのアクセスで使用したり、逆にFTPクライアントからのアクセスでキャッシュされたファイルをWWWクライアントからのアクセスで使用することができます。
[備考]
- キャッシュしたファイルのリストは、FTP PROXY機能とFTP中継機能の間で共用されません。
- FTP PROXY機能が上位PROXYサーバ経由でFTPサーバから取得したファイルは、FTP中継機能との間で共有されません。
- FTPキャッシュ制御機能では、以下の条件の場合、データのキャッシュの採取を行いません。
- FTP PROXY機能を使用する場合
- リクエストのメソッドがGET以外の場合
- HTTPプロトコルのバージョンが"0.9"の場合
- ユーザ名が"anonymous"または"ftp"以外の場合
- クライアントからのリクエストヘッダに"Cache-Control: no-store"が存在する場合
- サーバからのレスポンスヘッダに"Pragma: no-cache"が存在する場合
- サーバからのレスポンスヘッダに"Cache-Control: no-cache"、"Cache-Control: no-store"または"Cache-Control: private"が存在する場合
- サーバからのレスポンスヘッダにVaryヘッダが存在する場合
- 上位PROXYサーバ経由での取得時に、応答のステータスコードが"200"以外の場合
- リクエストのURLが、URL単位のキャッシュ制御のキャッシュ採取しないURLの設定と一致する場合
- FTP中継機能を使用する場合
- ユーザ名が"anonymous"または"ftp"以外の場合
- ファイルのタイプを"バイナリ(イメージ)"以外で取得した場合
- ファイルの一部のみを取得した場合
- 取得するデータのデータ構造が"ファイル"以外の場合
通常、FTPクライアントはデータ構造には"ファイル"を使用します。
- 取得するファイルやリストの絶対パスが不明な場合
- 取得するファイルやリストのパスに上位ディレクトリを示す指定(..)が含まれる場合
- FTPプロトコルのLISTコマンド以外でリストを取得した場合
- FTPプロトコルのLISTコマンドにパラメタが指定されている場合
- リストのタイプを"ASCII"以外で取得した場合
通常、FTPクライアントはリストを"ASCII"で取得します。
- FTPプロトコルのSMNTコマンドが使用された場合
通常、FTPクライアントはSMNTコマンドを使用しません。
- 取得するファイルやリストからマッピングしたURLが、URL単位のキャッシュ制御のキャッシュ採取しないURLの設定と一致する場合
- キャッシュ総量の制限
採取したキャッシュデータのサイズの合計が、指定したキャッシュ総量(サイズ)を超えないように自動的にキャッシュデータを削除することができます。
採取されたキャッシュデータのサイズの合計が、指定されたキャッシュ総量の90%を超えた場合には、自動的にキャッシュ総量の70%以下になるまで、キャッシュデータを参照されていないものから順に削除します。
このキャッシュ総量の制限は、HTTPキャッシュ機能、および、FTPキャッシュ機能のそれぞれで個別にキャッシュ総量を指定して制限することも可能です。
- キャッシュの自動削除
指定した時間に、一定期間参照されていないデータや、キャッシュ採取されてから一定期間経過したデータを自動的に削除することができます。
- データサイズによるキャッシュ採取の制御
キャッシュを採取するデータの最小サイズと最大サイズを指定して、一定のサイズより小さいデータや、一定のサイズより大きいデータのキャッシュ採取を抑制することができます。
キャッシュ採取を行う最小サイズと最大サイズは、HTTPキャッシュ機能、および、FTPキャッシュ機能のそれぞれで個別にサイズを指定できます。
さらに、URL単位のキャッシュ制御により、接続先のURLごとに最小サイズと最大サイズを指定することも可能です。
- データの有効性の確認
キャッシュ機能では、クライアントから要求されたデータがキャッシュの中に存在する場合は、サーバにアクセスすることなくクライアントへ応答を返すことで、高速な応答を実現しています。しかし、キャッシュしているデータがサーバ上で更新され古くなってしまう可能性があります。そのため、サーバへの確認の必要性を判断し、必要に応じて、サーバに接続しキャッシュデータの最新性の確認やデータの再取得を行う必要があります。
サーバへの確認の必要性の判断は次のように行います。また、これらのサーバへの確認の必要性の判断は、URL単位のキャッシュ制御によりURLごとに設定を変えることも可能です。
- HTTPキャッシュ機能の場合
サーバへの確認の必要性の判断の方法には、キャッシュデータの有効時間を使用して判断する方法と常にサーバに確認する方法の2通りがあります。
- 有効時間を使用して判断する方法
データをキャッシュしてから有効期間を経過していれば、WWWサーバへの確認を行います。
一般的に、WWWサーバのデータに関して、更新されてから時間のたっていないデータは頻繁に更新されており、逆に、更新されてから時間のたっているデータは今後も更新される可能性は低いと考えることができます。
そこで、キャッシュデータの有効期間は、そのデータが最後に更新されてからキャッシュ採取されるまでの時間と有効率を使用して算出します。データの最終更新時間には、WWWサーバからの応答に含まれるHTTPプロトコルのLast-Modifiedヘッダを使用します。
例えば、有効率が20%で、キャッシュしたデータが10時間前に更新されている場合には、そのデータの有効期間は2時間(10時間×20%)であると判断します。また、5年前に更新されている場合には、そのデータの有効期間は1年(5年×20%)であると判断します。
この機能により、自動的に、頻繁に更新されているデータに対しては、頻繁にWWWサーバに確認を行い、逆に更新頻度の低いデータに対しては、WWWサーバに確認することなくWWWクライアントへ応答する確率が高くなります。
さらに、最小有効期間、最大有効期間を指定することにより、一定時間以内は無条件にWWWサーバへの確認を回避したり、一定時間を超えた場合には無条件にWWWサーバへ確認を行うことが可能です。
ただし、デフォルトの設定では、WWWサーバからの応答データに最終更新時間がない場合はキャッシュの採取は行いません。
最終更新時間がないデータは、WWWサーバ上でCGIプログラムなどにより動的に作成されたデータであると推測できます。また、ニュースサイトなど頻繁に更新されるデータにも最終更新時間がついていないことがあります。
これらのデータは、頻繁に更新されたり、アクセスやユーザごとに応答データが異なっていたり、個人情報等を含んでいる可能性もあると考えられるので、デフォルトではキャッシュの採取を行いません。
しかし、設定により有効期間を指定して最終更新時間がないデータをキャッシュすることも可能です。その場合、データがキャッシュされてから指定された有効期間を超えると、WWWサーバに接続し、再度データの取得を行います。
[備考]
- ブラウザで再読み込みや更新を行った場合など、クライアントからのリクエストヘッダに"Pragma: no-cache"、"Cache-Control: no-cache"、または"Cache-Control: no-store"が存在する場合には、無条件にWWWサーバに確認を行います。
- サーバからの応答にデータの有効日時(Expireヘッダ)が存在する場合は設定に優先して、有効期間として使用します。
- 常にサーバに確認する方法
クライアントからのすべての要求に対して、無条件にWWWサーバに最新性の確認を行います。
通常のWWWサーバは、キャッシュデータが最新である場合、データが更新されていないという情報のみを返すため、再度WWWサーバからデータが転送されることはありません。
この場合、データの最新性が保証されますが、すべての要求に対して、確認のためWWWサーバへの接続が必要になるため、アクセス性能に影響することがあります。
- FTPキャッシュ機能の場合
サーバへの確認の必要性の判断は、有効期間を指定して行います。
データをキャッシュしてから、指定した有効期間を経過していれば、FTPサーバから再度データの取得を行います。
[備考]
- FTP PROXY機能では、ブラウザで再読み込みや更新を行った場合など、クライアントからのリクエストヘッダに"Pragma: no-cache"、"Cache-Control: no-cache"、または"Cache-Control: no-store"が存在する場合には、無条件にFTPサーバからデータの取得を行います。
- URL単位のキャッシュ制御
接続先のURL単位にキャッシュの採取を行うかどうかを指定することができます。
これにより、特定のURLのみキャッシュを行わない運用が可能となります。
さらに、URL単位にデータサイズによるキャッシュ採取の制御や、有効性の確認方法を指定することも可能です。
URLの指定には正規表現を使用します。正規表現については、“付録D 正規表現”を参照してください。
FTP中継の場合、ファイルやリストの取得をURLにマッピングすることにより、FTP中継においてもURL単位でのキャッシュ制御を可能にしています。FTP中継のマッピングについては、“付録E.1 URLへのマッピング方法”を参照してください。
- PUT/DELETE時のキャッシュ削除
HTTPキャッシュ、FTPキャッシュともに、PUTメソッドまたはDELETEメソッドでのリクエストによりサーバ上のデータが更新または削除された場合、InfoProxyにキャッシュが存在していれば削除します。
All Rights Reserved, Copyright (C) 富士通株式会社 1996-2006