(57)【要約】【課題】クライアントの利用頻度とサーバ上の更新頻度を適切に組み合わせてデータをキャッシュできるようにする。【解決手段】記憶部に記憶されたデータをクライアント装置が読み出す頻度であるデータ利用頻度情報を監視するデータ利用頻度監視手段と、前記データに対応するサーバ装置上のデータが更新される頻度であるデータ更新頻度を監視するデータ更新頻度監視手段と、前記データ利用頻度監視手段が出力するデータ利用頻度情報と前記データ更新頻度監視手段が出力するデータ更新頻度情報から前記データを前記記憶部に記憶すべきかどうかを判定するキャッシング判定手段と、前記キャッシング判定手段の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御手段とを備える。【選択図】図１
2012221368.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをクライアント装置から読み出し可能としたキャッシュ装置を備えたキャッシュシステムであって、
前記キャッシュ装置は、
前記データを記憶部に記憶する記憶手段と、
前記記憶部に記憶されたデータを前記クライアント装置が読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視手段と、
前記記憶されたデータに対応する前記サーバ装置上のデータが更新される頻度であるデータ更新頻度を監視するデータ更新頻度監視手段と、
前記データ利用頻度監視手段が出力するデータ利用頻度情報と前記データ更新頻度監視手段が出力するデータ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定手段と、
前記キャッシング判定手段の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御手段とを備えることを特徴とするキャッシュシステム。
【請求項２】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータを複数のクライアント装置から読み出し可能としたキャッシュシステムであって、
前記複数のクライアント装置のうち、少なくとも１つのクライアント装置に、
前記データを記憶部に記憶する記憶手段と、
前記記憶部に記憶されたデータを前記クライアント装置が読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視手段と、
前記記憶されたデータに対応する前記サーバ装置上のデータが更新される頻度であるデータ更新頻度を監視するデータ更新頻度監視手段と、
前記データ利用頻度監視手段が出力するデータ利用頻度情報と前記データ更新頻度監視手段が出力するデータ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定手段と、
前記キャッシング判定手段の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御手段とを設けたことを特徴とするキャッシュシステム。
【請求項３】
クライアント装置と、ネットワーク経由で取得したデータを記憶し、記憶されたデータを前記クライアント装置から読み出し可能としたサーバ装置とを有するキャッシュシステムであって、
前記サーバ装置に、
前記データを記憶部に記憶する記憶手段と、
前記記憶部に記憶されたデータを前記クライアント装置が読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視手段と、
前記記憶されたデータに対応する前記サーバ装置上のデータが更新される頻度であるデータ更新頻度を監視するデータ更新頻度監視手段と、
前記データ利用頻度監視手段が出力するデータ利用頻度情報と前記データ更新頻度監視手段が出力するデータ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定手段と、
前記キャッシング判定手段の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御手段とを設けたことを特徴とするキャッシュシステム。
【請求項４】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをアプリケーションから読み出し可能としたクライアント装置と前記サーバ装置からなるキャッシュシステムであって、
前記クライアント装置は、
前記データを記憶部に記憶する記憶手段と、
前記記憶部に記憶されたデータを前記アプリケーションが読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視手段と、
前記データ利用頻度監視手段が監視するデータについて更新頻度監視をサーバ装置に要求するデータ更新頻度監視要求送信手段と、
前記サーバ装置からデータ更新頻度情報を受信するデータ更新頻度情報受信手段と、
前記データ利用頻度監視手段が出力するデータ利用頻度情報と前記データ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定手段と、
前記キャッシング判定手段の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御手段とを備え、
前記サーバ装置は、
前記データ更新頻度情報受信手段から送信されるデータ更新頻度監視要求を受信するデータ更新頻度監視要求受信手段と、
前記データ更新頻度監視要求送信に応えてデータ更新頻度を監視するデータ更新頻度監視手段と、
前記データ更新頻度監視手段が出力するデータ更新頻度情報をクライアント装置に送信するデータ更新頻度情報送信手段とを備えることを特徴とするキャッシュシステム。
【請求項５】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをアプリケーションから読み出し可能としたクライアント装置と前記サーバ装置からなるキャッシュシステムであって、
前記クライアント装置は、
前記データを記憶部に記憶する記憶手段と、
前記記憶部に記憶されたデータを前記アプリケーションが読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視手段と、
前記データ利用頻度監視手段が出力するデータ利用頻度情報に基づきデータ更新頻度判定基準情報を生成するデータ更新頻度判定基準情報生成手段と、
前記データ更新頻度判定基準情報をサーバ装置に送信するデータ更新頻度判定基準情報送信手段と、
前記サーバ装置からデータ更新頻度判定結果情報を受信するデータ更新頻度判定結果情報受信手段と、
前記データ更新頻度判定結果情報から前記データを記憶すべきかどうかを判定するキャッシング判定手段と、
前記キャッシング判定手段の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御手段とを備え、
前記サーバ装置は、
前記データ更新頻度判定基準情報を受信するデータ更新頻度判定基準情報受信手段と、
前記データ更新頻度判定基準情報に基づいてデータ更新頻度を監視するデータ更新頻度監視手段と、
前記データ更新頻度監視手段が出力するデータ更新頻度判定結果情報をクライアント装置に送信するデータ更新頻度判定結果情報送信手段とを備えることを特徴とするキャッシュシステム。
【請求項６】
前記データは、前記クライアント装置によるデータ取得に際して前記サーバ装置上のデータを識別するためにクライアント装置からサーバ装置に送られるデータ識別子に対応づけて前記記憶手段に記憶されることを特徴とする請求項１〜５の何れか１項に記載のキャッシュシステム。
【請求項７】
前記データは、前記クライアント装置によるデータ取得に際して前記サーバ装置上のデータを識別するためにクライアント装置からサーバ装置に送られるデータ識別子及び前記キャッシュ制御手段がデータ取得を要求したクライアントを識別するためのクライアント識別子に対応づけて前記記憶手段に記憶されることを特徴とする請求項１〜５の何れか１項に記載のキャッシュシステム。
【請求項８】
前記データ識別子はＵＲＬもしくはＳＯＡＰプロトコルのボディ部に埋め込まれた情報であることを特徴とする請求項６または７に記載のキャッシュシステム。
【請求項９】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをアプリケーションから読み出し可能としたクライアント装置であって、
前記データを記憶部に記憶する記憶手段と、
前記記憶部に記憶されたデータを前記アプリケーションが読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視手段と、
前記データ利用頻度監視手段が監視するデータについて更新頻度監視をサーバ装置に要求するデータ更新頻度監視要求送信手段と、
前記サーバ装置からデータ更新頻度情報を受信するデータ更新頻度情報受信手段と、
前記データ利用頻度監視手段が出力するデータ利用頻度情報と前記データ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定手段と、
前記キャッシング判定手段の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御手段とを備えることを特徴とするクライアント装置。
【請求項１０】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをアプリケーションから読み出し可能としたクライアント装置であって、
前記データを記憶部に記憶する記憶手段と、
前記記憶部に記憶されたデータを前記アプリケーションが読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視手段と、
前記データ利用頻度監視手段が出力するデータ利用頻度情報に基づきデータ更新頻度判定基準情報を生成するデータ更新頻度判定基準情報生成手段と、
前記データ更新頻度判定基準情報をサーバ装置に送信するデータ更新頻度判定基準情報送信手段と、
前記サーバ装置からデータ更新頻度判定結果情報を受信するデータ更新頻度判定結果情報受信手段と、
前記データ更新頻度判定結果情報から前記データを記憶すべきかどうかを判定するキャッシング判定手段と、
前記キャッシング判定手段の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御手段とを備えることを特徴とするクライアント装置。
【請求項１１】
前記データは、前記クライアント装置によるデータ取得に際して前記サーバ装置上のデータを識別するためにクライアント装置からサーバ装置に送られるデータ識別子に対応づけて前記記憶手段に記憶されることを特徴とする請求項９または１０に記載のクライアント装置。
【請求項１２】
前記データ識別子はＵＲＬもしくはＳＯＡＰプロトコルのボディ部に埋め込まれた情報であることを特徴とする請求項１１に記載のクライアント装置。
【請求項１３】
前記キャッシュ制御手段は、前記キャッシング判定手段がデータを記憶すべきでないと判定した場合に、サーバ装置から取得して前記記憶手段に記憶しているデータを前記記憶手段から削除するよう制御することを特徴とする請求項９または１０に記載のクライアント装置。
【請求項１４】
前記キャッシュ制御手段は、前記キャッシング判定手段がデータを記憶すべきと判定した場合に、サーバ装置から取得したデータを前記記憶手段に記憶するよう制御することを特徴とする請求項９または１０に記載のクライアント装置。
【請求項１５】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをクライアント装置から読み出し可能としたキャッシュ装置を備えたキャッシュシステムの制御方法であって、
前記キャッシュ装置は、
前記データを記憶部に記憶する記憶工程と、
前記記憶工程に記憶されたデータを前記クライアント装置が読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視工程と、
前記記憶されたデータに対応する前記サーバ装置上のデータが更新される頻度であるデータ更新頻度を監視するデータ更新頻度監視工程と、
前記データ利用頻度監視工程から出力されるデータ利用頻度情報と前記データ更新頻度監視工程から出力されるデータ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定工程と、
前記キャッシング判定工程の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御工程とを備えることを特徴とするキャッシュシステムの制御方法。
【請求項１６】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータを複数のクライアント装置から読み出し可能としたキャッシュシステムの制御方法であって、
前記複数のクライアント装置のうち、少なくとも１つのクライアント装置は、
前記データを記憶部に記憶する記憶工程と、
前記記憶部に記憶されたデータを前記クライアント装置が読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視工程と、
前記記憶されたデータに対応する前記サーバ装置上のデータが更新される頻度であるデータ更新頻度を監視するデータ更新頻度監視工程と、
前記データ利用頻度監視工程が出力するデータ利用頻度情報と前記データ更新頻度監視工程が出力するデータ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定工程と、
前記キャッシング判定工程の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御工程とを備えることを特徴とするキャッシュシステムの制御方法。
【請求項１７】
クライアント装置と、ネットワーク経由で取得したデータを記憶し、記憶されたデータを前記クライアント装置から読み出し可能としたサーバ装置とを有するキャッシュシステムの制御方法であって、
前記サーバ装置は、
前記データを記憶部に記憶する記憶工程と、
前記記憶部に記憶されたデータを前記クライアント装置が読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視工程と、
前記記憶されたデータに対応する前記サーバ装置上のデータが更新される頻度であるデータ更新頻度を監視するデータ更新頻度監視工程と、
前記データ利用頻度監視工程が出力するデータ利用頻度情報と前記データ更新頻度監視工程が出力するデータ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定工程と、
前記キャッシング判定工程の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御工程とを備えることを特徴とするキャッシュシステムの制御方法。
【請求項１８】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをアプリケーションから読み出し可能としたクライアント装置と前記サーバ装置からなるキャッシュシステムの制御方法であって、
前記クライアント装置は、
前記データを記憶部に記憶する記憶工程と、
前記記憶部に記憶されたデータを前記アプリケーションが読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視工程と、
前記データ利用頻度監視工程が監視するデータについて更新頻度監視をサーバ装置に要求するデータ更新頻度監視要求送信工程と、
前記サーバ装置からデータ更新頻度情報を受信するデータ更新頻度情報受信工程と、
前記データ利用頻度監視工程から出力されるデータ利用頻度情報と前記データ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定工程と、
前記キャッシング判定工程の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御工程とを備え、
前記サーバ装置は、
前記データ更新頻度情報受信工程から送信されるデータ更新頻度監視要求を受信するデータ更新頻度監視要求受信工程と、
前記データ更新頻度監視要求送信に応えてデータ更新頻度を監視するデータ更新頻度監視工程と、
前記データ更新頻度監視工程から出力されるデータ更新頻度情報をクライアント装置に送信するデータ更新頻度情報送信工程とを備えることを特徴とするキャッシュシステムの制御方法。
【請求項１９】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをアプリケーションから読み出し可能としたクライアント装置と前記サーバ装置からなるキャッシュシステムの制御方法であって、
前記クライアント装置は、
前記データを記憶部に記憶する記憶工程と、
前記記憶部に記憶されたデータを前記アプリケーションが読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視工程と、
前記データ利用頻度監視工程から出力されるデータ利用頻度情報に基づきデータ更新頻度判定基準情報を生成するデータ更新頻度判定基準情報生成工程と、
前記データ更新頻度判定基準情報をサーバ装置に送信するデータ更新頻度判定基準情報送信工程と、
前記サーバ装置からデータ更新頻度判定結果情報を受信するデータ更新頻度判定結果情報受信工程と、
前記データ更新頻度判定結果情報から前記データを記憶すべきかどうかを判定するキャッシング判定工程と、
前記キャッシング判定工程の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御工程とを備え、
前記サーバ装置は、
前記データ更新頻度判定基準情報を受信するデータ更新頻度判定基準情報受信工程と、
前記データ更新頻度判定基準情報に基づいてデータ更新頻度を監視するデータ更新頻度監視工程と、
前記データ更新頻度監視工程から出力されるデータ更新頻度判定結果情報をクライアント装置に送信するデータ更新頻度判定結果情報送信工程とを備えることを特徴とするキャッシュシステムの制御方法。
【請求項２０】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをアプリケーションから読み出し可能としたクライアント装置の制御方法であって、
前記データを記憶部に記憶する記憶工程と、
前記記憶部に記憶されたデータを前記アプリケーションが読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視工程と、
前記データ利用頻度監視工程が監視するデータについて更新頻度監視をサーバ装置に要求するデータ更新頻度監視要求送信工程と、
前記サーバ装置からデータ更新頻度情報を受信するデータ更新頻度情報受信工程と、
前記データ利用頻度監視工程から出力されるデータ利用頻度情報と前記データ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定工程と、
前記キャッシング判定工程の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御工程とを備えることを特徴とするクライアント装置の制御方法。
【請求項２１】
サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをアプリケーションから読み出し可能としたクライアント装置の制御方法であって、
前記データを記憶部に記憶する記憶工程と、
前記記憶部に記憶されたデータを前記アプリケーションが読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視工程と、
前記データ利用頻度監視工程から出力されるデータ利用頻度情報に基づきデータ更新頻度判定基準情報を生成するデータ更新頻度判定基準情報生成工程と、
前記データ更新頻度判定基準情報をサーバ装置に送信するデータ更新頻度判定基準情報送信工程と、
前記サーバ装置からデータ更新頻度判定結果情報を受信するデータ更新頻度判定結果情報受信工程と、
前記データ更新頻度判定結果情報から前記データを記憶すべきかどうかを判定するキャッシング判定工程と、
前記キャッシング判定工程の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御工程とを備えることを特徴とするクライアント装置の制御方法。
【請求項２２】
請求項１５〜１９の何れか１項に記載のキャッシュシステムの制御方法の各工程をコンピュータに実行させることを特徴とするプログラム。
【請求項２３】
請求項２０または２１に記載のクライアント装置の制御方法の各工程をコンピュータに実行させることを特徴とするプログラム。
【請求項２４】
請求項２２または２３に記載のプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はキャッシュシステムおよびクライアント装置に関する。特に、クライアント装置が、サーバ装置上のデータをネットワーク経由で取得し、それをキャッシュして、クライアント装置から高速にアクセスできるようにするために用いて好適な技術に関する。
【背景技術】
【０００２】
クライアント装置（以下、クライアント）から利用するためにサーバ装置（以下、サーバ）上のデータをキャッシュするシステムは従来から存在する。
キャッシュシステムの課題の１つは、限られたキャッシュの記憶容量を有効利用することである。そのためには、クライアントの利用頻度が低いデータはキャッシュの記憶部にとどめず、より利用頻度が高いデータが記憶されるようにしたい。利用頻度を判断する様々な手法が存在する。例えば、ＬＲＵ（Least Recently Used）アルゴリズムが存在する。
【０００３】
キャッシュシステムの別の課題の１つは、サーバのデータ更新に遅滞なくキャッシュデータを同期させることである。サーバに対し、キャッシュが１対１で存在するならば同期は容易である。例えば、サーバ上のデータが更新されたら、そのデータに対応するキャッシュデータを無効化するか、サーバ上の新データで上書きすればよいからである。しかし、クライアント内にキャッシュが存在する場合のように、１つのサーバに対して多くのキャッシュが存在するならば、同期は困難になる。何故ならば、無効化や上書きを全てのキャッシュに対して行わなければならないからである。
【０００４】
さらに、サーバ上のデータの更新頻度が高くなれば、無効化や上書き処理が高い頻度で実行されることになる。その間にクライアントがキャッシュにアクセスしなければ、繰り返される無効化や上書き処理は無駄になる。この更新頻度が高い場合の問題は、サーバとキャッシュが１対１で存在する場合も同様に発生する。すなわち、サーバ上のデータ更新頻度が高いと、サーバとキャッシュの間の同期の課題が先鋭化する。
【０００５】
利用頻度や更新頻度の課題に関連する先行技術としては、以下のような例が挙げられる。
第１の例では、ＷＥＢサーバで頻繁に更新され、かつＷＥＢクライアントで頻繁に閲覧されるコンテンツは、ＷＥＢクライアントにおいて、ディスク上のキャッシュ領域に保管せず、ＷＥＢクライアントのメモリ上に保管する（特許文献１）。
【０００６】
第２の例では、コンテンツの固有情報及び属性を含んだコンテンツ参照要求を生成するクライアントからのコンテンツ参照要求に基づき、キャッシュサーバが、該コンテンツのキャッシュの有無をチェックする。そして、該コンテンツのキャッシュを保持していないときには、コンテンツサーバから該コンテンツをキャッシュして該コンテンツをクライアントに送信した後、コンテンツサーバとの間で該属性に基づく同期ミラーリング処理を行う（特許文献２）。
【０００７】
第３の例では、更新頻度に基づいて、Ｍａｐ−Ｒｅｄｕｃｅ処理において有効にキャッシュを利用するために、ファイルの更新頻度を一定時間における更新回数にて求め、閾値でグループ分けする。そして、グループ更新頻度が閾値以下であるグループに対するＭａｐ−Ｒｅｄｕｃｅ処理段階の部分的結果を生成し、生成された部分的結果をキャッシュする。キャッシュした結果は後のＭａｐ−Ｒｅｄｕｃｅ処理で用いる（特許文献３）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２９７６５号公報
【特許文献２】特開２００７−１２８３７１号公報
【特許文献３】特開２０１０−９２２２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
前述した特許文献に記載されている先行技術では、利用頻度や更新頻度を用いてキャッシュシステムの課題を解決しようとしている。しかしながら、そのほとんどが利用頻度と更新頻度の片方の情報のみを利用している。利用頻度だけを使ってキャッシュを制御する場合、利用頻度が高いデータをキャッシュするのが原則であるが、そのデータのサーバ上の更新頻度が利用頻度以上に高ければ、キャッシュデータが古くなってしまう不都合が生じる。
【００１０】
また、更新頻度だけを使ってキャッシュを制御する場合、前述した背景技術で説明したキャッシュの無効化や上書き処理問題を回避するために、更新頻度が高いデータはキャッシュしないで済ませることが考えられる。しかし、そのデータに対するクライアントの利用頻度が高ければ、逐一サーバにアクセスするのに時間がかかってしまう不都合が生じる。
【００１１】
前述した特許文献１と特許文献２においては、更新頻度情報の他に、各々、閲覧頻度と参照頻度という用語で、利用頻度情報の使用を示唆している。しかし、特許文献１においては、利用頻度に類似した閲覧間隔を算出するものの、更新間隔と掛け合わせた結果の数値から保持期間を決定しているだけで、閲覧間隔を求めた効果が不明確である。
【００１２】
例えば、閲覧間隔が１週間以内、更新間隔が１時間以内ならば、キャッシュデータ保持期間が１週間となる。しかしながら、更新間隔が１時間なのでキャッシュデータが古くなるのは必然である。このため、キャッシュデータが古くならないようにするには、結局ＷＥＢサーバの更新間隔に合わせて、キャッシュデータを更新するしかない。
【００１３】
特許文献２に記載のプログラマブルコントローラのプログラミング装置では、コンテンツの更新頻度が非常に高く、それに対してクライアントの参照要求頻度が低い場合でもキャッシュを有効に働かせることによって流通する通信量を削減できるとしている。しかし、実施形態で開示されているのは、参照要求頻度に合わせてキャッシュサーバデータを更新するものであり、更新頻度が高いかどうかを判断しているわけではない。
【００１４】
以下、特許文献２を詳しく見ていく。キャッシュサーバ主導でキャッシュを更新する場合、コンテンツ参照要求から得て保持しているコンテンツの固有情報及び属性に基づき、自ら保持・管理する情報からキャッシュの更新が必要であることを自律的に検知する（ステップＳ１１）。属性の例としてはキャッシュのライフタイムや参照希望間隔が挙げられている。いずれも更新頻度に基づいてキャッシュを更新するものではない。前述した利用頻度だけを使ってキャッシュを制御する場合と同様の課題が存在する。
【００１５】
一方、コンテンツサーバ主導でキャッシュを更新する場合、コンテンツサーバは、自ら保持・管理する情報（コンテンツの固有情報及び属性）からキャッシュの更新が必要であることを自律的に検知する（ステップＳ２１）。しかし、コンテンツサーバ上のデータの更新タイミングとステップＳ２１の関係が明示されていないので、コンテンツサーバ上のデータ更新頻度が高いときにキャッシュがどのように更新されるかは不明である。
【００１６】
以上のように、先行技術ではクライアントの利用頻度に比較して、サーバ上の更新頻度が高いデータもキャッシュしてしまっていたため、キャッシュデータがすぐ古くなってしまい、無意味になるという課題があった。
本発明は前述の問題点に鑑み、クライアントの利用頻度とサーバ上の更新頻度を適切に組み合わせてデータをキャッシュできるようにすることを目的とする。
【課題を解決するための手段】
【００１７】
本発明のキャッシュシステムは、サーバ装置からネットワーク経由で取得したデータを記憶し、記憶されたデータをクライアント装置から読み出し可能としたキャッシュ装置を備えたキャッシュシステムであって、前記キャッシュ装置は、前記データを記憶部に記憶する記憶手段と、前記記憶部に記憶されたデータを前記クライアント装置が読み出す頻度であるデータ利用頻度を監視するデータ利用頻度監視手段と、前記記憶されたデータに対応する前記サーバ装置上のデータが更新される頻度であるデータ更新頻度を監視するデータ更新頻度監視手段と、前記データ利用頻度監視手段が出力するデータ利用頻度情報と前記データ更新頻度監視手段が出力するデータ更新頻度情報から前記データを記憶すべきかどうかを判定するキャッシング判定手段と、前記キャッシング判定手段の判定の結果に基づいて前記データの記憶の実行を制御するキャッシュ制御手段とを備えることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、クライアントの利用頻度に比較してサーバ上の更新頻度が高いデータをキャッシュせずに、サーバ装置からデータを取得するようにしたため、古くなったキャッシュデータを使わずに済むという効果が得られる。
【図面の簡単な説明】
【００１９】
【図１】第１の実施形態のキャッシュシステムの構成例を示すブロック図である。
【図２】キャッシュ装置のハードウェア構成例を示すブロック図である。
【図３】第１の実施形態におけるデータ取得手順を説明するフローチャートである。
【図４】キャッシュ、更新頻度監視情報、利用頻度監視情報を示す図である。
【図５】データ利用頻度監視手段の動作手順を示すフローチャートである。
【図６】キャッシュ制御手段のキャッシュ制御手順を示すフローチャートである。
【図７】キャッシュ制御手段のデータ取得手順を説明するフローチャートである。
【図８】キャッシュ制御手段のキャッシュ制御手順を説明するフローチャートである。
【図９】第２の実施形態のキャッシュシステムの構成例を示すブロック図である。
【図１０】第３の実施形態のキャッシュシステムの構成例を示すブロック図である。
【図１１】第４の実施形態のキャッシュシステムの構成例を示すブロック図である。
【図１２】第５の実施形態のキャッシュシステムの構成例を示すブロック図である。
【発明を実施するための形態】
【００２０】
（第１の実施形態）
以下、発明を実施するための形態について図面を用いて説明する。
図１は、本発明の第１の実施形態にかかるキャッシュシステムの構成を示したブロック図である。本実施形態のキャッシュシステムは、キャッシュ装置１００、クライアント１１０、サーバ１２０を備える。
【００２１】
キャッシュ装置１００は、サーバ１２０上のデータ（サーバ装置上のデータ）をキャッシュするものである。クライアント１１０はキャッシュ装置１００を経由してサーバ１２０にアクセスすることが可能である。本実施形態において、キャッシュ装置１００にアクセスできるクライアントは４つ存在している。第１のクライアント１１０ａ、第２のクライアント１１０ｂ、第３のクライアント１１０ｃで表す。また、第４のクライアント１１０ｄは、キャッシュ装置１００を経由せず、サーバ１２０に直接アクセスすることもできる。第４のクライアント１１０ｄはキャッシュ装置１００とは無関係にサーバ１２０上のデータを更新する。従ってキャッシュ装置１００は、サーバ１２０上のデータが更新されたかどうかを監視する必要がある。
【００２２】
サーバ１２０は、データを記憶するための記憶部を持つが、図１においては図示しない。
キャッシュ装置１００、クライアント１１０、サーバ１２０間の通信は通常の方法、すなわち種々の有線通信や無線通信の方式を用いて行われる。
【００２３】
キャッシュ装置１００は以下の構成要素を備える。
１０１はキャッシュ制御手段であり、クライアント１１０からのデータアクセス要求に応答したり、サーバ１２０にアクセスしたり、サーバ１２０から取得したデータをキャッシュとして記憶したりする。キャッシュ制御手段１０１の詳細は後述する。
【００２４】
１０２はキャッシング判定手段であり、データ利用頻度情報とデータ更新頻度情報からデータをキャッシュすべきかどうかを判定する。
１０３はデータ利用頻度監視手段であり、クライアント１１０からのデータ利用要求の頻度を計測する。計測結果であるデータ利用頻度情報はキャッシング判定手段１０２に通知される。
【００２５】
１０４はサーバ１２０上のデータの更新頻度を計測するデータ更新頻度監視手段である。計測結果であるデータ更新頻度情報はキャッシング判定手段１０２に通知される。１０５は記憶手段であり、１０５ａはキャッシュされたデータの記憶領域として使われる記憶部である。
【００２６】
図１におけるキャッシュ装置１００は機能別に手段を備えるものであるが、複数の手段を中央処理装置で兼ね、ソフトウェアで機能を実現することも可能である。ＣＰＵを備えたキャッシュ装置１００のハードウェア構成の一例のブロック図を図２に示す。
【００２７】
図２において、キャッシュ装置１００は以下の要素を備える。装置全体を制御するところの中央処理装置（以下、ＣＰＵと称す）２０１。各種動作プログラムを読み取り可能に格納したＲＯＭ２０２。プログラム動作中の一時的な値の保存に用いるＲＡＭ２０３。各種時間を計測するタイマ２０４。ユーザインタフェースを表示するためのディスプレイ２０５。キーボード、マウス、タッチディスプレイ等の入力手段である操作部２０６。各種設定データファイルを保存しておくための不揮発性メモリであるＦｌａｓｈＲＯＭ２０７。外部装置と接続するためのネットワークＩ／Ｆ２０８。各種動作プログラム及び設定データファイルを保存しておくためのハードディスク（以下、ＨＤと称す）２０９。
【００２８】
図１における、キャッシュ制御手段１０１、キャッシング判定手段１０２、データ利用頻度監視手段１０３、データ更新頻度監視手段１０４を１つのＣＰＵ２０１が兼ねることが可能である。この場合は、ソフトウェアの動作が各手段の機能を実現していることになる。図示しないが、各手段毎に個別のＣＰＵ２０１を備えてもよい。いずれにしても本実施形態は、ハードウェア、ソフトウェアの手段の別によらず、実現可能である。
【００２９】
キャッシュ装置１００とクライアント１１０あるいはサーバ１２０との間の通信に関しては、ネットワークＩ／Ｆ２０８が担い、ネットワーク経由で情報の授受が行われる。
図１における記憶部１０５ａは、キャッシュデータを格納するものであり、書き換え可能な媒体、すなわちＲＡＭ２０３、ＦｌａｓｈＲＯＭ２０７、あるいはハードディスク２０９からなる。なお、図２に示したハードウェア構成は、クライアント１１０、サーバ１２０についても同様である。
【００３０】
次に、本実施形態のキャッシュシステムの動作手順について説明する。
（Ａ．データ取得動作）
図１の第１のクライアント１１０ａがデータを取得する場合の手順、及びキャッシュ制御手段１０１のデータ取得手順を、図１及び図３のフローチャートを用いて説明する。
第１のクライアント１１０ａはキャッシュ制御手段１０１に対し、データ取得要求を行う（矢印１５１）。要求するためのプロトコルは一般的なものが使用可である。例えば、Hyper Text Transfer Protocol（ＨＴＴＰ）が使える。その場合は、取得対象データはＵＲＬ（Uniform Resource Locator）で識別することが可能である。
【００３１】
ＨＴＴＰとは異なるトランスポート層のプロトコルや、トランスポート層以外の層のプロトコルを用いることもできる。後者としては、例えばＷＥＢサービス提供に用いられるＳＯＡＰプロトコルを使用することが可能である。その場合は、取得対象データはＳＯＡＰボディ部の内容、詳しく言えばオペレーションやパラメータの内容で識別することが可能である。以下の説明において、前述の取得対象データを識別するための情報をデータ識別子と呼ぶことにする。
【００３２】
取得対象データを特定するために、データ識別の他に、データ取得要求を行った第１のクライアント１１０ａを識別するためのクライアント識別も行われる。クライアント識別は、クライアント識別子を用いて行う。第１のクライアント１１０ａのアドレス情報やハードウェア識別番号がクライアント識別子として使用できる。接続セッションを、あるいはログインユーザを識別できればよいのであれば、セッション識別子やログインユーザ識別子を用いることもできる。
【００３３】
前述のクライアント識別子及びデータ識別子によって識別されたデータをキャッシュとして記憶するときは、図４（ａ）のキャッシュテーブル４００１に格納される。図４（ａ）を見てわかるように、データ内容とともにクライアント識別子とデータ識別子も合わせて格納される。これにより、クライアント識別子とデータ識別子からキャッシュデータの識別、読み出し、上書きが可能となっている。従って同じデータ識別子を持つデータであっても、複数個のデータがキャッシュテーブル４００１に記憶されていることがあり得る。キャッシュテーブル４００１は記憶部１０５ａに記憶される。
【００３４】
キャッシュ制御手段１０１は、前述したデータ取得要求を受ける（Ｓ３０１）。キャッシュ制御手段１０１は、クライアント識別子とデータ識別子から要求されたデータを識別し、該当するデータに対応するキャッシュ不可フラグがオンになっているかどうかを判定する（Ｓ３０２）。キャッシュ不可フラグは、そのデータはキャッシュテーブル４００１にキャッシュすることができないことを表すフラグである。キャッシュ不可フラグもキャッシュテーブル４００１に格納されており、それを見て判定する。キャッシュ不可フラグをオンにする手順については後述する。
【００３５】
キャッシュ不可フラグがオンになっていない場合、該当するデータの内容がキャッシュテーブル４００１内に存在するかどうか、つまり、キャッシュテーブル４００１内のデータ内容フィールドが空でないかどうかを判定する（Ｓ３０３）。
【００３６】
データ内容がキャッシュテーブル４００１内に存在しない場合、つまり、まだキャッシュされていない場合は、キャッシュ制御手段１０１はサーバ１２０に対しデータ取得要求を行う（矢印１５２、Ｓ３０４）。データ取得要求１５１の本来のアクセス先がそもそもサーバ１２０を指しており、キャッシュ装置１００はサーバ１２０のプロキシとして働くならば、データ取得要求１５１をそのままデータ取得要求１５２として用いてよい。
【００３７】
もちろん、データ取得要求１５１と１５２の取得データが同じものを意味しているのであれば、データ取得要求１５１の内容を一部変更して１５２として用いることもあり得る。例えば、データ取得要求１５１のアクセス先がキャッシュ装置１００を指しているなら、そのアクセス先をサーバ１２０としたものをデータ取得要求１５２とすることが考えられる。
【００３８】
データ取得要求１５２を受けたサーバ１２０は、要求されたデータを返す（矢印１５９）。返されたデータをキャッシュ制御手段１０１は取得する（Ｓ３０５）。
キャッシュ制御手段１０１は、取得したデータを第１のクライアント１１０ａに返す（矢印１６０、Ｓ３０６）。
【００３９】
次いで、キャッシュ制御手段１０１は、取得したデータを、キャッシュテーブル４００１に格納する（Ｓ３０７）。具体的には、キャッシュテーブル４００１の空きを見つけ、そこにクライアント識別子、データ識別子、データ内容を格納する。そのキャッシュ不可フラグはオフとする。キャッシュテーブル４００１に空きがなかった場合は、最も古いデータを削除して空きを作る。
【００４０】
古いデータの削除の方法は、キャッシュテーブル４００１中の削除対象データに対応するクライアント識別子、データ識別子、データ内容、及びキャッシュ不可フラグの各フィールドの中身の削除である。空きを作ったらそこに取得したデータを格納する。空きを作らずに、古いデータを新たなデータで上書きしてもよい。
【００４１】
次に、キャッシュ制御手段１０１は、データ更新頻度監視手段１０４に対し、そのデータに関する更新頻度監視を要求する（矢印１５３、Ｓ３０８）。データ更新頻度監視要求１５３のパラメータとしては、データ識別子、サーバアクセスアドレス及びクライアント識別子が含まれる。ここでは、サーバアクセスアドレスとデータ識別子から、サーバ１２０への当該データに対する情報取得、すなわちデータ取得や更新監視が可能になるものとする。サーバアクセスアドレスだけでデータを一意に識別できるのであれば、サーバアクセスアドレスがデータ識別子の役割を兼ねてもよい。サーバアクセスアドレスはデータ取得要求１５２で用いられたものが使用される。
【００４２】
最後に、キャッシュ制御手段１０１は、データ利用頻度監視手段１０３に対し、そのデータに関する利用頻度監視を要求して（矢印１５６、Ｓ３０９）、データ取得手順を終了する。データ利用頻度監視要求１５６のパラメータとしては、データ識別子及びクライアント識別子が含まれる。
【００４３】
一方、Ｓ３０３で、データがキャッシュテーブル４００１内に存在する場合は、キャッシュ制御手段１０１はキャッシュテーブル４００１から識別されたデータを読み出し（Ｓ３１０）、第１のクライアント１１０ａにデータを返す（矢印１６０、Ｓ３１１）。
【００４４】
最後に、キャッシュ制御手段１０１は、データ利用頻度監視手段１０３に対し、そのデータに関する利用頻度監視を要求して（矢印１５６、Ｓ３１２）、データ取得手順を終了する。
また、Ｓ３０２でデータに対応するキャッシュ不可フラグがオンになっている場合、キャッシュ制御手段１０１はサーバ１２０に対しデータ取得要求を行う（矢印１５２、Ｓ３１３）。
【００４５】
データ取得要求１５２を受けたサーバ１２０は、要求されたデータを返す（矢印１５９）。キャッシュ制御手段１０１は返されたデータを取得する（Ｓ３１４）。キャッシュ制御手段１０１は、取得したデータを第１のクライアント１１０ａに返して（矢印１６０、Ｓ３１５）データ取得手順を終了する。
【００４６】
（Ｂ．更新頻度監視動作）
データ更新頻度監視要求１５３を受けたデータ更新頻度監視手段１０４は、データ更新頻度監視要求１５３が対象とするデータがサーバ上で更新される頻度を監視する。以下、その動作について説明する。
【００４７】
データ更新頻度監視手段１０４は、データ更新頻度監視要求１５３を受け取ると、図４（ｂ）に示す更新頻度監視情報テーブル４００２にパラメータを記憶する。つまり、クライアント識別子、データ識別子、及びサーバアクセスアドレスが記憶される。更新頻度監視情報テーブル４００２は、データ更新頻度監視手段１０４内の図示しない記憶部、あるいは記憶部１０５ａに記憶される。
【００４８】
この時、要求対象データに対する監視開始日時、監視期間、監視間隔も更新頻度監視情報テーブル４００２に設定される。監視開始日時には、データ更新頻度監視要求１５３を受けた日時か、それで都合がつかない場合は都合がよい時刻、例えばその日の深夜が選ばれる。監視期間、監視間隔は所定の値が選ばれる。監視開始日時、監視期間、監視間隔は、他の選び方をとることもできる。それらの値がデータ更新頻度監視要求１５３のパラメータ中に含まれるようにし、単にパラメータを更新頻度監視情報テーブル４００２に記憶するようにしてもよい。このようにすれば、クライアント識別子やデータ識別子で識別されるデータ毎に監視開始日時、監視期間、監視間隔を変更して、監視内容に柔軟性を持たせることができる。
【００４９】
更新頻度監視情報テーブル４００２に記憶されている１つのデータについて監視開始日時になると、データ更新頻度監視手段１０４はサーバ１２０から監視対象データに対する情報を取得する（矢印１５４）。取得する情報は、データそのもの、あるいはそのデータの更新日時情報である。
【００５０】
データそのものを取得する場合、以前のデータと内容を比較し、変化していたら更新があったとみなす。この場合、以前のデータは更新頻度監視情報テーブル４００２に記憶しておく（図示せず）。また、データの更新日時情報を取得する場合、以前のデータ更新日時情報と比較し、変化していたら更新があったとみなす。この場合、以前のデータは更新頻度監視情報テーブル４００２に記憶しておく（図示せず）。更新があった場合、更新頻度監視情報テーブル４００２の更新回数を増分する。
【００５１】
更新頻度監視情報テーブル４００２に記憶されている１つのデータについて監視期間が過ぎると、データ更新頻度監視手段１０４は更新頻度監視情報テーブル４００２から当該データに対するデータ更新頻度情報１５５を出力し、キャッシング判定手段１０２に送る。
【００５２】
データ更新頻度情報１５５にはクライアント識別子、データ識別子、監視期間、監視間隔、及び更新回数の各情報が含まれる。監視期間、監視間隔、更新回数の代わりに、それらの情報を総合して得られる更新発生比率（監視を行った回数に対する更新回数の割合。更新回数／（監視期間／監視間隔）で表される数値）を含んでもよい。データ更新頻度情報１５５をキャッシング判定手段１０２に送り終わると、更新頻度監視情報テーブル４００２から当該データに関する情報を削除する。
【００５３】
以上のデータ更新監視は、クライアント識別子とデータ識別子の組み合わせで識別されるデータの単位で行われる。従って、データ識別子が同じであっても、更新頻度監視情報テーブル４００２上では異なるデータとして扱われる。例えば、監視開始日時、監視間隔が異なれば、監視を行うタイミングは異なってくる。
【００５４】
以上のデータ更新監視は、データ更新頻度監視手段１０４が行う動作として説明してきたが、前述したように、１つのＣＰＵ２０１がキャッシュ制御手段１０１とデータ更新頻度監視手段１０４を兼ねることもあり得る。その場合は、キャッシュ制御手段１０１とデータ更新頻度監視手段１０４に各々相当するソフトウェアが異なるスレッドで動作することによって、両者の動作を実現できる。
【００５５】
以上の手順では、一旦監視が開始されると、監視期間が経過するまで監視が継続される。しかし、前述したように、キャッシュテーブル４００１中のデータは削除されることがあり得る。削除されると監視が無駄になる。それを回避するためには、監視を中止させるメッセージがキャッシュ制御手段１０１からデータ更新頻度監視手段１０４に送られるようにすればいい。つまり、キャッシュ制御手段１０１がキャッシュテーブル４００１中のデータを削除する時に、データ更新頻度監視中止要求（図示せず）をデータ更新頻度監視手段１０４に送り、それを受けたデータ更新頻度監視手段１０４は監視を中止する。
【００５６】
（Ｃ．利用頻度監視動作）
データ利用頻度監視要求１５６を受けたデータ利用頻度監視手段１０３は、データ利用頻度監視要求１５６が対象とするデータを第１のクライアント１１０ａが利用する頻度を監視する。以下、その動作について図１と、データ利用頻度監視手段１０３の動作手順を説明する図５のフローチャートを用いて説明する。
【００５７】
データ利用頻度監視手段１０３は、データ利用頻度監視要求１５６を受け取る（Ｓ５０１）と、そのパラメータであるクライアント識別子とデータ識別子の組が図４（ｃ）に示す利用頻度監視情報テーブル４００３に記憶されているかどうかを判定する（Ｓ５０２）。記憶されていなければ、パラメータの組を記憶する（Ｓ５０３）。利用頻度監視情報テーブル４００３は、データ利用頻度監視手段１０３内の図示しない記憶部あるいは記憶部１０５ａに記憶される。
【００５８】
この時、要求対象データに対する監視開始日時、監視期間も利用頻度監視情報テーブル４００３に設定する（Ｓ５０４）。監視開始日時には、データ利用頻度監視要求１５６を受けた日時を設定する。監視期間には所定の値を設定する。監視期間はデータ利用頻度監視要求１５６のパラメータ中に含まれるようにし、単にパラメータを利用頻度監視情報テーブル４００３に記憶するようにしてもよい。このようにすれば、クライアント識別子やデータ識別子で識別されるデータ毎に監視期間を変更して、監視内容に柔軟性を持たせることができる。
【００５９】
Ｓ５０４の後、要求対象データに対する利用回数１を利用頻度監視情報テーブル４００３に設定して（Ｓ５０５）、利用頻度監視動作を終了する。
一方、Ｓ５０２の判定の結果、パラメータの組が利用頻度監視情報テーブル４００３に記憶されている場合は、要求対象データに対する利用回数を増分する（Ｓ５０６）。
【００６０】
利用頻度監視情報テーブル４００３に記憶されている１つのデータについて監視期間が過ぎると、データ利用頻度監視手段１０３は利用頻度監視情報テーブル４００３から当該データに対するデータ利用頻度情報１５７を出力し、キャッシング判定手段１０２に送る。データ利用頻度情報１５７にはクライアント識別子、データ識別子、監視期間、利用回数の各情報が含まれる。監視期間、利用回数の代わりに、それらの情報を総合して得られる利用比率（監視期間に対する利用回数の割合。利用回数／監視期間で表される数値）を含んでもよい。データ利用頻度情報１５７をキャッシング判定手段１０２に送り終わると、利用頻度監視情報テーブル４００３から当該データに関する情報を削除する。
【００６１】
以上のデータ利用監視は、クライアント識別子とデータ識別子の組み合わせで識別されるデータの単位で行われる。従って、データ識別子が同じであっても、利用頻度監視情報テーブル４００３上では異なるデータとして扱われる。
【００６２】
以上のデータ利用監視は、データ利用頻度監視手段１０３が行う動作として説明してきたが、前述したように、１つのＣＰＵ２０１がキャッシュ制御手段１０１とデータ利用頻度監視手段１０３を兼ねることもあり得る。この場合、利用頻度を１に設定したり増分したりする手順についてはシングルスレッドでも実現可能である。Ｓ３０９に続いて図５のシーケンスが実行されればよい。監視期間が過ぎた場合の手順については、タイマイベントを利用するなどして、キャッシュ制御手段１０１とデータ利用頻度監視手段１０３に各々相当するソフトウェアが異なるスレッドで動作することによって、両者の動作を実現できる。
【００６３】
以上の手順では、一旦監視が開始されると、監視期間が経過するまで監視が継続される。しかし、前述したように、キャッシュテーブル４００１中のデータが削除され、監視が無駄になることがあり得る。それを回避するためには、監視を中止させるメッセージがキャッシュ制御手段１０１からデータ利用頻度監視手段１０３に送られるようにすればよい。つまり、キャッシュ制御手段１０１がキャッシュテーブル４００１中のデータを削除する時に、データ利用頻度監視中止要求（図示せず）をデータ利用頻度監視手段１０３に送り、それを受けたデータ利用頻度監視手段１０３は監視を中止する。
【００６４】
（Ｄ．キャッシング判定動作）
データ更新頻度情報１５５とデータ利用頻度情報１５７を受けたキャッシング判定手段１０２は、対象データをキャッシングすべきかどうかを判定する。以下、キャッシング判定動作について説明する。
【００６５】
データ更新頻度情報１５５とデータ利用頻度情報１５７は、各々、監視開始日時から監視期間が経過した時点でキャッシング判定手段１０２に送られる。同一データに対する各々の監視開始日時と監視期間は同じであることが望ましいが、それに限定されるわけではない。監視開始日時と監視期間を同じに設定したとしても、ハードウェアやＣＰＵ２０１の動作タイミングによって、データ更新頻度情報１５５とデータ利用頻度情報１５７をキャッシング判定手段１０２が受け取るタイミングは異なってくる。従って、同一データに対するそれらの頻度情報のうち、どちらが先に来てもよいように、先に来た頻度情報を記憶しておく必要がある。
【００６６】
記憶した頻度情報と後から来た頻度情報をクライアント識別子とデータ識別子でマッチングする。マッチングが取れたら、マッチングが取れたデータ更新頻度情報１５５の監視期間、監視間隔、更新回数から前述の更新発生比率を求める。データ更新頻度情報１５５の中に更新発生比率が入っている場合は、そのまま使えばよい。また、マッチングが取れたデータ利用頻度情報１５７の監視期間、利用回数から前述の利用比率を求める。データ利用頻度情報１５７の中に利用比率が入っている場合は、そのまま使えばよい。
【００６７】
次に、キャッシング判定手段１０２は、更新頻度を意味する更新発生比率と利用頻度を意味する利用比率を比較する。大まかに言って、利用頻度に比べて更新頻度が高ければ、そのデータは相対的に更新頻度が高いと見なして、キャッシュしないと判断する。その判断の方法は様々なものを採用し得る。
【００６８】
更新頻度が高いかどうかを判定式によって判断するとする。（ａ）利用比率＜更新発生比率という判定式を用いる場合や、更新発生比率ではなく、更新比率（＝更新回数／監視期間）を使い、（ｂ）利用比率＜更新比率という判定式を用いる場合が考えられる。
【００６９】
更新発生比率は監視を行った回数に対する更新回数の割合であり、例えば、（Ａ−１）更新回数１２回、監視期間２４時間、監視間隔２時間の場合と、（Ａ−２）更新回数２４回、監視期間２４時間、監視間隔１時間の場合とでは、更新発生比率は１で同じである。Ａ−１の場合であっても、もし監視間隔を１時間にしたら、更新回数２４回が観測される可能性はある。Ａ−１の場合、監視間隔の度に必ず更新されていることが観測されるというだけで、実際の更新間隔はより短いかもしれない。監視間隔を１時間にしても、その度に更新されることはあり得る。このように考える場合、更新発生比率は単位時間あたりの更新回数、すなわち更新比率と見なしてよいということになり、判定式として前述した（ａ）を採用し得る。
【００７０】
一方、更新発生比率は更新比率と同じとは見なさないという考え方もある。Ａ−１において、監視間隔を１時間にしても、更新回数は１２回のままかもしれない。この考え方の場合、利用頻度と比較すべき値は更新発生比率ではなく、更新比率になる。Ａ−１の更新比率は毎時０．５回、Ａ−２の更新比率は毎時１回となる。判定式としては前述した（ｂ）を用いる。
【００７１】
前述した（ａ）や（ｂ）のように、利用頻度と更新頻度を単純に比較する方法だけでなく、所定の定数を頻度値に乗じたり、加えたりしたものを比較する方法も考えられる。利用比率ｘ、更新発生比率ｙとすると、「ｃ＊ｘ＋ｄ＜ｙ」を判定式として用いる方法である。定数ｃやｄの値としては、所定の値を用いることができる他、クライアント１１０毎、データ毎に変えることもできる。前述したのと同様に、パラメータ化して、キャッシュ制御手段１０１から指定する。
【００７２】
以上のように、利用頻度と更新頻度を比較し、データをキャッシュすべきかどうかを判定する。判定の結果であるキャッシング判定結果情報１５８がキャッシュ制御手段１０１に送られる。キャッシング判定結果情報１５８は、クライアント識別子、データ識別子、キャッシング可否情報を含む。相対的に更新頻度が高いと判定されれば、キャッシング可否情報はキャッシング可となる。低いと判定されればキャッシュ不可となる。
【００７３】
（Ｅ．キャッシング判定結果に基づくキャッシュ制御動作）
キャッシング判定結果情報１５８を受けたキャッシュ制御手段１０１のキャッシュ制御手順を図６のフローチャートを用いて説明する。
キャッシング判定結果情報１５８を受ける（Ｓ６０１）と、クライアント識別子とデータ識別子から、該当データの内容がキャッシュテーブル４００１内に存在するかどうかを判定する（Ｓ６０２）。この判定の結果、存在しなければ手順を終了する。
【００７４】
キャッシュテーブル４００１に格納されたデータが増えていき、格納データサイズがキャッシュテーブル４００１の最大容量に達すると、新たなデータをキャッシュするために、古いデータが削除される。従って、キャッシュ制御手段１０１が監視要求を行ってからキャッシング判定結果情報１５８を受け取るまでに、データがキャッシュテーブル４００１から削除されていることがあり得る。そのためにＳ６０２の判定が必要となる。
【００７５】
該当データがキャッシュテーブル４００１内に存在する場合、次に、キャッシング判定結果情報１５８中のキャッシング可否情報がキャッシング可であるかどうかを判定する（Ｓ６０３）。キャッシング可である場合は、そのままキャッシングを続けてよいので、キャッシュ制御動作を終了する。
【００７６】
一方、キャッシング不可である場合は、キャッシュテーブル４００１から該当データの内容を削除する。つまり、キャッシュテーブル４００１中の該当データに対応するデータ内容フィールドを空にする（Ｓ６０４）。最後に、該当データに対応するキャッシュ不可フラグをオンにして（Ｓ６０５）、キャッシュ制御動作を終了する。
以上、データ取得から始まって、更新頻度監視、利用頻度監視、キャッシング判定、キャッシュ制御の各動作について説明した。
【００７７】
前述の動作では、一旦キャッシュ可・不可が決定されたら変更されない。しかし、データの相対的な更新頻度は常に一定というわけではなく、上昇や下降はあり得る。そのような状況に対応する場合の動作を以下に説明する。
まず、キャッシュテーブル４００１の構造として、前述のフィールドに加え、キャッシュ有効期限フィールドを設ける。図３のフローチャートのＳ３０７でデータをキャッシュテーブル４００１に格納したとき、キャッシュ有効期限フィールドを設定する。
【００７８】
例えば、現在日時から所定の日数あるいは時間が経過した時点を有効期限とする。キャッシュ制御手段１０１はキャッシュ有効期限を監視し、有効期限に達したデータについては削除する。次回データ取得要求が行われたとき、そのデータはキャッシュに存在しないので、初期状態と同様の状態となり、再度更新頻度監視と利用頻度監視が実行される。以上の手順は、キャッシュされた状態で相対的な更新頻度が上昇したためにキャッシュ不可に変更したい状況に対応することができる。
【００７９】
次に、キャッシュテーブル４００１の構造として、前述のフィールドに加え、キャッシュ不可見直し日時フィールドを設ける。図６のフローチャートのＳ６０５でデータに対応するキャッシュ不可フラグをオンにしたとき、キャッシュ不可見直し日時フィールドを設定する。
【００８０】
例えば、現在日時から所定の日数あるいは時間が経過した時点を見直し日時とする。キャッシュ制御手段１０１はキャッシュ不可見直し日時を監視し、見直し日時に達したデータについては削除する。次回データ取得要求が行われたとき、そのデータはキャッシュに存在しないので、初期状態と同様の状態となり、再度更新頻度監視と利用頻度監視が実行される。以上の手順は、キャッシュ不可状態で相対的な更新頻度が下がったためにキャッシュ可に変更したい状況に対応することができる。
【００８１】
前述したキャッシュ有効期限フィールドとキャッシュ不可見直し日時フィールドは、意味が異なるものの、同時には使用せず、使用方法が排他的であるので、２つのフィールドを１つのフィールドで兼ねてもよい。
【００８２】
前述の手順では、キャッシング判定手段１０２がキャッシング不可と判定した場合にキャッシュデータを削除していた（図６のＳ６０４）。キャッシング判定手段１０２が判定結果を出す前にデータはキャッシュされていることがその前提にあった。本発明はこの手順にとどまるものではない。
【００８３】
キャッシング判定手段１０２が判定結果を出す前はデータをキャッシュしないでおき、キャッシング判定手段１０２がキャッシング可と判定した場合にデータをキャッシュすることも可能である。以下、その手順について述べる。
【００８４】
図７のフローチャートを参照しながらキャッシュ制御手段１０１のデータ取得手順を説明する。図７は図３の変形であり、ここで説明しない前提条件は図３で説明したものと同一とする。
キャッシュ制御手段１０１は、第１のクライアント１１０ａからデータ取得要求１５１を受ける（Ｓ７０１）。
【００８５】
キャッシュ制御手段１０１は、クライアント識別子とデータ識別子から要求されたデータを識別し、該当するデータに対応するキャッシング判定済みフラグがオンになっているかどうかを判定する（Ｓ７０２）。キャッシュ判定済みフラグは、そのデータに対してキャッシング判定手段１０２がキャッシング判定を既に行ったかどうかを表すフラグである。キャッシング判定済みフラグは図示しないが、キャッシュテーブル４００１に格納されているものとし、それを見て判定する。キャッシング判定済みフラグをオンにする手順については後述する。
【００８６】
キャッシング判定済みフラグがオンになっていない場合、キャッシュ制御手段１０１はサーバ１２０に対しデータ取得要求１５２を行う（Ｓ７０３）。データ取得要求１５２を受けたサーバ１２０は要求されたデータを返す（矢印１５９）。返されたデータをキャッシュ制御手段１０１は取得する（Ｓ７０４）。キャッシュ制御手段１０１は、取得したデータ１６０を第１のクライアント１１０ａに返す（Ｓ７０５）。
【００８７】
次に、キャッシュ制御手段１０１は、当該データに関する更新頻度監視を要求済みかどうかを判定する（Ｓ７０６）。まだ一度も要求済みでない場合、キャッシュ制御手段１０１は、データ更新頻度監視手段１０４に対し、そのデータに関するデータ更新頻度監視要求１５３を要求する（Ｓ７０７）。
【００８８】
要求した後は、図示しないがフラグセット等の手段により、当該データに関する更新頻度監視を要求済みとする。これとＳ７０６の判定ステップを設けることによって、更新頻度監視要求済みだがキャッシング判定済みでないという条件において、同一データに対するデータ取得要求があった場合に、データ更新頻度監視要求１５３を重複して行ってしまうことが防止できる。最後に、キャッシュ制御手段１０１は、データ利用頻度監視手段１０３に対し、そのデータに関するデータ利用頻度監視要求１５６を要求して（Ｓ７０８）、データ取得手順を終了する。
【００８９】
一方、Ｓ７０２においてキャッシング判定済みフラグがオンになっていると判定された場合、キャッシュ制御手段１０１は、該当するデータに対応するキャッシュ不可フラグがオンになっているかどうかを判定する（Ｓ７０９）。キャッシュ不可フラグがオンになっていない場合、該当するデータの内容がキャッシュテーブル４００１内に存在するかどうかを判定する（Ｓ７１０）。
【００９０】
データ内容がキャッシュテーブル４００１内に存在しない、つまりまだキャッシュされていない場合は、キャッシュ制御手段１０１はサーバ１２０に対しデータ取得要求１５２を行う（Ｓ７１１）。データ取得要求１５２を受けたサーバ１２０は要求されたデータを返す（矢印１５９）。キャッシュ制御手段１０１は返されたデータを取得する（Ｓ７１２）。次いで、キャッシュ制御手段１０１は、取得したデータを、キャッシュテーブル４００１に格納する（Ｓ７１３）。
【００９１】
一方、Ｓ７１０で、データ内容がキャッシュテーブル４００１内に存在すると判定された場合、キャッシュ制御手段１０１はキャッシュテーブル４００１からデータを読み出す（Ｓ７１６）。
Ｓ７１３またはＳ７１４の次に、キャッシュ制御手段１０１は取得したデータ１６０を第１のクライアント１１０ａに返す（Ｓ７１４）。最後に、キャッシュ制御手段１０１は、データ利用頻度監視手段１０３に対し、そのデータに関するデータ利用頻度監視要求１５６を要求して（Ｓ７１５）、データ取得手順を終了する。
【００９２】
また、Ｓ７０９でデータに対応するキャッシュ不可フラグがオンになっていると判定された場合、キャッシュ制御手段１０１は、サーバ１２０へのデータ取得要求を行う（Ｓ７１７）。次いで、サーバ１２０からのデータ取得（Ｓ７１８）、第１のクライアント１１０ａへのデータ返戻（Ｓ７１９）を行い、データ取得手順を終了する。
【００９３】
次に、キャッシング判定結果情報１５８を受けたキャッシュ制御手段１０１のキャッシュ制御手順を図８のフローチャートを用いて説明する。
最初にキャッシング判定結果情報１５８を受ける（Ｓ８０１）。
次に、キャッシング判定結果情報１５８中のキャッシング可否情報がキャッシング可であるかどうかを判定する（Ｓ８０２）。キャッシング可である場合は、該当データに対応するキャッシュ不可フラグをオフにする（Ｓ８０３）。キャッシング不可である場合は、該当データに対応するキャッシュ不可フラグをオンにする（Ｓ８０５）。最後に、該当データに対応するキャッシング判定済みフラグをオンにして（Ｓ８０４）、終了する。
【００９４】
以上の手順により、第１のクライアント１１０ａの初回データ取得要求時にはキャッシュしない。そして、キャッシング判定手段１０２がデータを記憶すべきと判定した場合に、次回のデータ取得要求時からサーバ１２０から取得したデータをキャッシュすることが可能になる。
【００９５】
以上、キャッシュ装置１００、クライアント１１０、サーバ１２０がネットワークで接続された構成のキャッシュシステムの実施形態について説明したが、本発明はこれにとどまるものではない。例えば、キャッシュ装置１００の手段や機能がクライアント１１０の中に入っても、サーバ１２０の中に入ってもよい。キャッシュ装置１００の手段や機能がクライアント１１０の中に入ったときの実施形態を、以下の第２の実施形態として説明する。
【００９６】
（第２の実施形態）
キャッシュ装置１００の手段や機能がクライアント１１０の中に入ったときの構成を図９のブロック図で示す。図１と比較すると、キャッシュ制御手段１０１にデータ取得要求を行う主体が第１のクライアント１１０ａからアプリケーション３０１に変わっている。図１を用いた説明では、第１のクライアント１１０ａとキャッシュ制御手段１０１との間の通信はネットワークを用いた通信であった。
【００９７】
図９においては、アプリケーション３０１を実行するハードウェア手段とキャッシュ制御手段１０１がネットワークで接続されているならば、同様にネットワークを用いて通信することが可能である。アプリケーション３０１とキャッシュ制御手段１０１が同一のＣＰＵ２０１で構成されているならば、ＣＰＵ２０１の上で走るオペレーティングシステム（ＯＳ）が提供するプロセス間通信方法を用いて通信することが可能である。もしくは、キャッシュ制御手段１０１が提供するＡＰＩ（Application Programming Interface）をアプリケーション３０１が呼び出すことによって通信が可能である。
【００９８】
図９では、個々のクライアント１１０にキャッシュ装置１００の手段や機能が埋め込まれた構成をとるので、キャッシュ制御の際にクライアント識別を行う必要はない。キャッシュ制御手段１０１や他のキャッシュを制御するための他の手段にとって、それらを含む装置であるクライアント１１０あるいはキャッシュ制御手段１０１にアクセスするアプリケーション３０１が唯一のクライアントと判断される。
【００９９】
したがって、図９の構成では、第１の実施形態で説明したクライアント識別やそれを行うためのクライアント識別子は不要となる。データ識別子だけでデータの識別が可能ということである。キャッシュ制御手段１０１にアクセスするアプリケーション３０１が複数存在し、個別にキャッシュを管理したいのであれば、前述のクライアント識別と同様にアプリケーション識別を行えばよい。クライアント識別子の代わりにアプリケーション識別子が導入されることになる。
【０１００】
（第３の実施形態）
キャッシュ装置１００の手段や機能がサーバ１２０の中に入ったときの実施形態を第３の実施形態として説明する。第３の実施形態の構成を図１０のブロック図に示す。図１と比較して新たな構成要素は、サーバ１２０に含まれる記憶手段３１４、記憶部３１４ａである。記憶部３１４ａにはオリジナルな全データが格納される。キャッシュデータを記憶する記憶部１０５ａと同一のハードウェア手段で構成することも可能である。
【０１０１】
データ取得要求１５２とその返事（矢印１５９）は、キャッシュ制御手段１０１による記憶部３１４ａの読み出し処理になる。更新を監視するためのデータ情報取得１５４は、データ更新頻度監視手段１０４による記憶部３１４ａの読み出し処理になる。図１と異なり、データ更新頻度監視手段１０４がサーバ１２０内に組み込まれた分、更新頻度監視処理にかかる手間や時間が削減される。
【０１０２】
（第４の実施形態）
第４の実施形態では、キャッシュ装置１００の手段や機能がクライアント１１０の中に入ったときの、第２の実施形態とは異なる実施形態について説明する。第４の実施形態の構成を図１１のブロック図で示す。以下、第１の実施形態並びに第２の実施形態との相違点を中心に説明する。
【０１０３】
図１１において、図１並びに図９と異なるのは、データ更新頻度監視手段１０４がないことである。その代わり、第１のクライアント１１０ａはデータ更新頻度監視要求送信手段４０１とデータ更新頻度情報受信手段４０２を備える。
【０１０４】
サーバ１２０に関しては、図１と図９では構成要素を明確にしてこなかったが、図１１ではデータ更新頻度監視手段３１１、記憶手段３１４、記憶部３１４ａ、データ更新頻度監視要求受信手段４１１、データ更新頻度情報送信手段４１２を備える。
【０１０５】
以下、第４の実施形態の動作について説明する。
アプリケーション３０１がキャッシュ制御手段１０１に対してデータ取得要求１５１を行ったとき、大まかに言えば、キャッシュ制御手段１０１では図３のフローチャートの手順が実行される。但し、サーバ１２０においては、データ更新頻度監視手段１０４がないので、Ｓ３０８の処理は行わない。その代わり、データ更新頻度監視要求１５３のパラメータとして渡されていたサーバアクセスアドレスは、データ利用頻度監視要求（矢印１５６、Ｓ３０９）のパラメータとともに渡される。
【０１０６】
データ利用頻度監視手段１０３がデータ利用頻度監視要求１５６を受けると、第１の実施形態で説明した（Ｃ．利用頻度監視動作）の動作を行うとともに、データ更新頻度監視要求送信手段４０１に対し、データ更新頻度監視要求４５１を送る。データ更新頻度監視要求４５１には、データ識別子、サーバアクセスアドレスが含まれる。監視関連のパラメータである監視開始日時、監視期間、監視間隔を含んでもよい。
【０１０７】
データ更新頻度監視要求４５１を受けたデータ更新頻度監視要求送信手段４０１は、サーバアクセスアドレスに基づき、サーバ１２０にアクセスする。そして、サーバ１２０に対してデータ更新頻度監視要求４５２を送る。データ更新頻度監視要求４５２にはデータ識別子が含まれる。データ更新頻度監視要求４５１に監視関連パラメータが含まれるなら、それもデータ更新頻度監視要求４５２に含まれる。
【０１０８】
サーバ１２０のデータ更新頻度監視要求受信手段４１１は、データ更新頻度監視要求４５２を受けると、データ更新頻度監視要求４５３をデータ更新頻度監視手段３１１に送る。データ更新頻度監視要求４５３にはデータ識別子の他、第１の実施形態で説明したクライアント識別子が含まれる。
【０１０９】
データ更新頻度監視要求受信手段４１１は、どのクライアント１１０が接続してきたのかを判別し、接続してきた第１のクライアント１１０ａを識別するためのクライアント識別子をデータ更新頻度監視要求４５３に追加する。または、キャッシュ制御手段１０１がクライアント識別子を生成する。その上で、データ利用頻度監視要求１５６、データ更新頻度監視要求４５１、データ更新頻度監視要求４５２、データ更新頻度監視要求４５３のパラメータとしてクライアント識別子が渡されるようにしてもよい。
【０１１０】
なお、第４の実施形態におけるクライアント識別子は、単に第１のクライアント１１０ａを識別するだけでなく、後でサーバ１２０から第１のクライアント１１０ａに接続するためのクライアントアクセスアドレスを含む。データ更新頻度監視要求４５２に監視関連パラメータが含まれるなら、それもデータ更新頻度監視要求４５３に含まれる。
【０１１１】
データ更新頻度監視要求４５３を受けたデータ更新頻度監視手段３１１は、第１の実施形態の（Ｂ．更新頻度監視動作）で示したように、パラメータを更新頻度監視情報テーブル４００２に格納する。データ更新頻度監視要求４５３に監視関連パラメータが含まれないならば、所定の監視開始日時、監視期間、監視間隔が更新頻度監視情報テーブル４００２に格納される。
【０１１２】
そして、データ更新頻度監視手段３１１は第１の実施形態（Ｂ．更新頻度監視動作）と同様の更新頻度監視動作を行う。記憶部３１４ａ上の監視対象のデータの内容を見て、更新されているか否かを判断する。あるデータについて監視期間が過ぎると、データ更新頻度監視手段３１１は更新頻度監視情報テーブル４００２からそのデータに対するデータ更新頻度情報４５４を生成し、データ更新頻度情報送信手段４１２に送る。
【０１１３】
データ更新頻度情報４５４にはクライアント識別子、データ識別子、監視期間、監視間隔、及び更新回数の各情報が含まれる。監視期間、監視間隔、更新回数の代わりに、それらの情報を総合して得られる更新発生比率を含んでもよい。
【０１１４】
データ更新頻度情報４５４を受けたデータ更新頻度情報送信手段４１２は、クライアント識別子からクライアントアクセスアドレスを取得し、第１のクライアント１１０ａに接続する。そして、第１のクライアント１１０ａにデータ更新頻度情報４５５を送る。データ更新頻度情報４５５は、データ識別子、監視期間、監視間隔、及び更新回数の各情報を含む。データ更新頻度情報４５４が更新発生比率を含むならそれを含む。
【０１１５】
第１のクライアント１１０ａのデータ更新頻度情報受信手段４０２は、データ更新頻度情報４５５を受けると、データ更新頻度情報４５６としてキャッシング判定手段１０２に送る。利用頻度監視動作や、キャッシング判定動作、キャッシング判定結果に基づくキャッシュ制御動作に関しては、第１の実施形態と同様である。
【０１１６】
第４の実施形態では、更新頻度監視動作がサーバ１２０内で行われるので、監視動作中はネットワーク通信が発生しないという効果がある。この方式は、モバイル端末等、ネットワーク通信を常に行えるとは限らない状況で、より大きい効果を持つ。また、第１のクライアント１１０ａ内に更新頻度監視情報テーブル４００２が不要で、更新頻度監視に関する動作負荷も軽減されるという効果がある。第１のクライアント１１０ａはサーバ１２０に比較して記憶部１０５ａやＣＰＵ２０１のリソースが低レベルであるので、メリットになる。
【０１１７】
（第５の実施形態）
第５の実施形態では、キャッシュ装置１００の手段や機能がクライアント１１０の中に入ったときの、第２の実施形態や第４の実施形態とは異なる実施形態について説明する。
第５の実施形態の構成を図１２のブロック図で示す。以下、第１の実施形態、第２の実施形態、並びに第４の実施形態との相違点を中心に説明する。
【０１１８】
図１２が図１、図９、並びに図１１と異なるのは、第１のクライアント１１０ａがデータ更新頻度判定基準情報生成手段３０２、データ更新頻度判定基準情報送信手段３０３、データ更新頻度判定結果情報受信手段３０４を含む点である。また、サーバ１２０がデータ更新頻度判定基準情報受信手段３１２とデータ更新頻度判定結果情報送信手段３１３を含む点が図１１と異なる。
【０１１９】
以下、第５の実施形態の動作について説明する。
アプリケーション３０１がキャッシュ制御手段１０１に対しデータ取得要求１５１を行ったとき、大まかに言えば、キャッシュ制御手段１０１では、図３のフローチャートの手順が実行される。但し、データ更新頻度監視手段１０４がないので、Ｓ３０８の処理は行わない。その代わり、データ更新頻度監視要求１５３のパラメータとして渡されていたサーバアクセスアドレスは、データ利用頻度監視要求（矢印１５６、Ｓ３０９）のパラメータとともに渡される。
【０１２０】
データ利用頻度監視手段１０３がデータ利用頻度監視要求１５６を受けると、第１の実施形態（Ｃ．利用頻度監視動作）において図５を用いて説明したような利用頻度監視動作を行う。利用頻度監視動作の結果は利用頻度監視情報テーブル４００３に格納される。
【０１２１】
監視期間が過ぎると、利用頻度監視情報テーブル４００３に格納された情報に基づき、データ利用頻度監視手段１０３が利用比率を計算する。そして、それとデータ識別子とサーバアクセスアドレスを含む利用比率情報３５１をデータ更新頻度判定基準情報生成手段３０２に送る。
【０１２２】
利用比率情報３５１を受けたデータ更新頻度判定基準情報生成手段３０２は、含まれる利用比率を元に、それ以上ならば相対的に更新頻度が高いと判定できる更新発生比率もしくは更新比率を求める。この更新発生比率や更新比率は後で更新頻度を判定するための閾値として働くため、更新頻度判定基準情報と呼ぶことにする。
【０１２３】
データ更新頻度判定基準情報生成手段３０２は、求めた更新頻度判定基準情報と、データ識別子、サーバアクセスアドレスを含むデータ更新頻度判定基準情報３５２をデータ更新頻度判定基準情報送信手段３０３に送る。データ更新頻度判定基準情報３５２に監視関連のパラメータである監視開始日時、監視期間、監視間隔を含んでもよいことは第４の実施形態と同様である。以降は、監視関連パラメータは含まないものとして説明する。
【０１２４】
データ更新頻度判定基準情報３５２を受けたデータ更新頻度判定基準情報送信手段３０３は、サーバアクセスアドレスに基づき、サーバ１２０にアクセスする。そして、サーバ１２０に対してデータ更新頻度判定基準情報３５３を送る。データ更新頻度判定基準情報３５３には更新頻度判定基準情報とデータ識別子が含まれる。
【０１２５】
サーバ１２０のデータ更新頻度判定基準情報受信手段３１２は、データ更新頻度判定基準情報３５３を受けると、データ更新頻度判定基準情報３５４をデータ更新頻度監視手段３１１に送る。データ更新頻度判定基準情報３５４には更新頻度判定基準情報とデータ識別子の他、第１の実施形態で説明したクライアント識別子が含まれる。
【０１２６】
データ更新頻度判定基準情報受信手段３１２は、どのクライアント１１０が接続してきたのかを判別し、接続してきた第１のクライアント１１０ａを識別するためのクライアント識別子をデータ更新頻度判定基準情報３５４に追加する。または、第４の実施形態で説明したように、キャッシュ制御手段１０１がクライアント識別子を生成し、それがメッセージのパラメータとして渡されるようにしてもよい。なお、クライアント識別子は、単に第１のクライアント１１０ａを識別するだけでなく、後でサーバ１２０から第１のクライアント１１０ａに接続するためのクライアントアクセスアドレスを含む。
【０１２７】
データ更新頻度判定基準情報３５４を受けたデータ更新頻度監視手段３１１は、第１の実施形態の（Ｂ．更新頻度監視動作）で示したように、パラメータを更新頻度監視情報テーブル４００２に格納する。第５の実施形態の場合、更新頻度監視情報テーブル４００２に、更新頻度判定基準情報を格納するフィールドを設けるものとする。
【０１２８】
データ更新頻度判定基準情報３５４に監視関連パラメータが含まれないならば、所定の監視開始日時、監視期間、監視間隔が更新頻度監視情報テーブル４００２に格納される。そして、データ更新頻度監視手段３１１は第１の実施形態の（Ｂ．更新頻度監視動作）と同様の更新頻度監視動作を行う。記憶部３１４ａ上の監視対象のデータの内容を見て、更新されているか否かを判断する。
【０１２９】
あるデータについて監視期間が過ぎると、データ更新頻度監視手段３１１は更新頻度監視情報テーブル４００２からそのデータに対する更新発生比率または更新比率を計算する。計算の結果、得た値を更新頻度監視情報テーブル４００２に格納された更新頻度判定基準情報と比較し、得た値の方が大きければ、更新頻度高と判定する。そうでなければ更新頻度低と判定する。
【０１３０】
この判定結果と、クライアント識別子、データ識別子からなるデータ更新頻度判定結果情報３５５をデータ更新頻度監視手段３１１はデータ更新頻度判定結果情報送信手段３１３に送る。データ更新頻度判定結果情報３５５を受けたデータ更新頻度判定結果情報送信手段３１３は、クライアント識別子からクライアントアクセスアドレスを取得し、第１のクライアント１１０ａに接続する。そして第１のクライアント１１０ａにデータ更新頻度判定結果情報３５６を送る。データ更新頻度判定結果情報３５６は、判定結果とデータ識別子を含む。
【０１３１】
第１のクライアント１１０ａのデータ更新頻度判定結果情報受信手段３０４はデータ更新頻度判定結果情報３５６を受けると、データ更新頻度判定結果情報３５７としてキャッシング判定手段１０２に送る。キャッシング判定手段１０２は、データ更新頻度判定結果情報３５７に含まれる判定結果が更新頻度高であればデータ識別子が識別するデータに対してキャッシング不可と判定する。更新頻度低であればキャッシング可と判断する。この後のキャッシング判定動作や、利用頻度監視動作、キャッシング判定結果に基づくキャッシュ制御動作に関しては、第１の実施形態と同様である。
【０１３２】
第５の実施形態では、利用頻度監視動作が終了したときの利用頻度情報をキャッシング判定手段１０２が記憶しておく必要がなくなる、キャッシング判定手段の判定処理の動作負荷が軽減されるという効果がある。
【０１３３】
以上、実施形態に基づき本発明を説明してきた。
本発明は、普段はキャッシュを使うものの、相対的に更新頻度が高いデータについては手間をかけずに最新データを取得したいという用途に適する。例えば、モバイル端末等では、ネットワーク通信に時間がかかる、あるいはネットワーク通信が出来ない場合がある。そのような機器ではなるべくデータをキャッシュしたいという要求が高い。
【０１３４】
しかし、あるデータについては相対的な更新頻度が高いので、最新データにアクセスするにはキャッシュではなくデータのオリジナルのサーバにアクセスする必要が生じる。このとき、従来技術によくあるように、キャッシュアクセスからサーバアクセスへの切り替えを、ユーザが手動で行うのは手間がかかる。本発明はこのような状況において手間をかけずに最新データを取得できるという効果を持つ。
【０１３５】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、前述した実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種のコンピュータ読み取り可能な記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１３６】
１００  キャッシュ装置、１０１  キャッシュ制御手段、１０２  キャッシング判定手段、１０３  データ利用頻度監視手段、１０４  データ更新頻度監視手段、１０５  記憶手段、１０５ａ  記憶部、１１０  クライアント、１２０  サーバ、１５５  データ更新頻度情報、１５７  データ利用頻度情報、２０１  ＣＰＵ、３０１  アプリケーション、４００１  キャッシュテーブル、４００２  更新頻度監視情報テーブル、４００３  利用頻度監視情報テーブル
【図１】
2012221368.tif 000003
【図２】
2012221368.tif 000004
【図３】
2012221368.tif 000005
【図４】
2012221368.tif 000006
【図５】
2012221368.tif 000007
【図６】
2012221368.tif 000008
【図７】
2012221368.tif 000009
【図８】
2012221368.tif 000010
【図９】
2012221368.tif 000011
【図１０】
2012221368.tif 000012
【図１１】
2012221368.tif 000013
【図１２】
2012221368.tif 000014