(57)【特許請求の範囲】
【請求項１】
クライアント装置とサーバとにネットワークで接続され、前記クライアント装置と前記サーバの間で中継を行う中継機器であって、
前記ネットワークを介して、前記クライアント装置から、処理対象となる処理対象データと、前記サーバを示す宛先情報とを含むリクエストを受信する第１通信部と、
前記処理対象データに対して前記サーバで実行するサーバ側処理と同等のアルゴリズムの中継機器側処理を、前記処理対象データに対して実行して前記中継機器側処理の実行による第１処理結果を得るデータ処理部と、
前記リクエストを前記サーバに送信し、前記サーバから、前記リクエストに対するレスポンスとして、前記第１処理結果と対応し、かつ前記処理対象データに対する前記サーバ側処理の実行による第２処理結果を受信する第２通信部と、
前記第２処理結果が前記クライアント装置に送信されているか否かを判定する制御部と、を備え、
前記第１通信部は、前記第２処理結果が前記クライアント装置に送信されていないと判定された場合に、前記第１処理結果を前記レスポンスとして前記クライアント装置に送信することを特徴とする中継機器。
【請求項２】
前記データ処理部は、前記処理対象データに対して前記サーバ側処理の処理単位と異なる処理単位で、前記処理対象データに対して前記中継機器側処理を実行することを特徴とする請求項１に記載の中継機器。
【請求項３】
前記サーバにおいて前記サーバ側処理を行うサーバ側プログラムと処理順序が同一で、かつ最終的に同一の出力が得られる中継機器側プログラムを記憶するプログラム記憶部をさらに備え、
前記データ処理部は、前記中継機器側プログラムを実行することにより、前記中継機器側処理を前記処理対象データに対して実行することを特徴とする請求項１に記載の中継機器。
【請求項４】
レスポンステーブルを記憶するテーブル記憶部と、
前記第１処理結果が得られた場合に、前記リクエストを識別するリクエスト識別情報と、前記データ処理部により得られた前記第１処理結果を識別する第１処理結果識別情報とを対応付けて前記レスポンステーブルに登録し、前記サーバから前記第２処理結果を受信した場合に、前記リクエスト識別情報と、前記第２処理結果を識別する第２処理結果識別情報とを対応付けて前記レスポンステーブルに登録するレスポンス管理部と、をさらに備え、
前記制御部は、前記レスポンステーブルを参照し、前記第１処理結果と対応する前記第２処理結果の前記第２処理結果識別情報が前記レスポンステーブルに登録されているか否かを判定し、
前記第１通信部は、前記第２処理結果識別情報が前記レスポンステーブルに登録されていないと判定された場合に、前記第１処理結果を前記レスポンスとして前記クライアント装置に送信することを特徴とする請求項１に記載の中継機器。
【請求項５】
前記制御部は、前記第１処理結果に対応する前記第２処理結果が既に前記クライアント装置に送信されていると判定された場合には、前記第１処理結果を削除し、
前記データ処理部は、前記処理対象データに対する処理を終了することを特徴とする請求項１に記載の中継機器。
【請求項６】
前記制御部は、前記サーバから前記レスポンスとして前記処理対象データに対する前記第２処理結果が受信された場合に、前記第２処理結果に対応する前記第１処理結果が前記クライアント装置に既に送信されているか否かを判定し、
前記第１通信部は、前記第１処理結果が前記クライアント装置に送信されていないと判定された場合に、前記第２処理結果を前記レスポンスとして前記クライアント装置に送信することを特徴とする請求項１に記載の中継機器。
【請求項７】
レスポンステーブルを記憶するテーブル記憶部と、
前記第１処理結果が得られた場合に、前記リクエストを識別するリクエスト識別情報と、前記データ処理部により得られた前記第１処理結果を識別する第１処理結果識別情報とを対応付けて前記レスポンステーブルに登録し、前記サーバから前記第２処理結果が受信された場合に、前記リクエスト識別情報と、前記第２処理結果を識別する第２処理結果識別情報とを対応付けて前記レスポンステーブルに登録するレスポンス管理部と、をさらに備え、
前記制御部は、前記レスポンステーブルを参照し、前記第２処理結果に対応する前記第１処理結果の前記第１処理結果識別情報が前記レスポンステーブルに登録されているか否かを判定し、
前記第１通信部は、前記第１処理結果の前記第１処理結果識別情報が前記レスポンステーブルに登録されていないと判定された場合に、前記第２処理結果を前記レスポンスとして、前記クライアント装置に送信することを特徴とする請求項６に記載の中継機器。
【請求項８】
前記制御部は、前記第２処理結果に対応する前記第１処理結果が既に前記クライアント装置に送信されていると判定された場合に、前記第２処理結果を削除することを特徴とする請求項６に記載の中継機器。
【請求項９】
前記データ処理部は、所定の第１範囲の前記処理対象データに対して前記中継機器側処理を、前記第１範囲の処理対象データに対して実行し、
前記第１通信部は、前記中継機器側処理により得られた前記第１範囲の前記処理対象データに対する第１処理結果を、前記リクエストに対するレスポンスとして前記クライアント装置に送信することを特徴とする請求項１に記載の中継機器。
【請求項１０】
前記第２通信部は、前記処理対象データのうち前記第１範囲以外の範囲である第２範囲の前記処理対象データに対する前記サーバ側処理により得られた前記第２処理結果を前記サーバから受信し、
前記第１通信部は、前記第２処理結果を前記第２範囲の前記処理対象データに対する前記レスポンスとして前記クライアント装置に送信することを特徴とする請求項９に記載の中継機器。
【請求項１１】
前記第１通信部が受信した前記リクエストに含まれる前記処理対象データから、前記第１範囲を削除する編集部をさらに備え、
前記第２通信部は、前記第１範囲が削除された前記処理対象データを含む前記リクエストを前記サーバに送信することを特徴とする請求項９に記載の中継機器。
【請求項１２】
前記リクエストに含まれる前記処理対象データに、前記第１範囲を示す範囲情報を追加する編集部をさらに備え、
前記第２通信部は、前記範囲情報を含む前記リクエストを前記サーバに送信することを特徴とする請求項９に記載の中継機器。
【請求項１３】
前記中継機器から前記サーバへの回線の状況に基づいて、前記第１範囲を決定する範囲決定部、をさらに備え、
前記データ処理部は、前記範囲決定部により決定された第１範囲の前記処理対象データに対して前記中継機器側処理を実行することを特徴とする請求項９に記載の中継機器。
【請求項１４】
前記中継機器の処理負荷に基づいて、前記第１範囲を決定する範囲決定部、をさらに備え、
前記データ処理部は、前記範囲決定部により決定された第１範囲の前記処理対象データに対して前記中継機器側処理を実行することを特徴とする請求項９に記載の中継機器。
【請求項１５】
前記サーバの処理負荷に基づいて、前記第１範囲を決定する範囲決定部、をさらに備え、
前記データ処理部は、前記範囲決定部により決定された第１範囲の前記処理対象データに対して前記中継機器側処理を実行することを特徴とする請求項９に記載の中継機器。
【請求項１６】
前記第１通信部が前記リクエストを受信した場合に、前回の前記リクエストを受信した際に前記データ処理部が利用した第１範囲と、前記サーバから受信した前記第２処理結果の受信タイミングとに基づいて、前記第１範囲を決定する範囲決定部をさらに備え、
前記データ処理部は、前記範囲決定部により決定された第１範囲の前記処理対象データに対して前記中継機器側処理を実行することを特徴とする請求項１０に記載の中継機器。
【請求項１７】
前記第２通信部は、さらに前記第１処理結果を前記サーバに送信することを特徴とする請求項１１に記載の中継機器。
【請求項１８】
クライアント装置とサーバとにネットワークで接続され、前記クライアント装置と前記サーバの間で中継を行う中継機器で実行される中継方法であって、
前記ネットワークを介して、前記クライアント装置から、処理対象となる処理対象データと、前記サーバを示す宛先情報とを含むリクエストを受信する第１通信ステップと、
前記処理対象データに対して前記サーバで実行するサーバ側処理と同等のアルゴリズムの中継機器側処理を、前記処理対象データに対して実行して前記中継機器側処理の実行による第１処理結果を得るデータ処理ステップと、
前記リクエストを前記サーバに送信し、前記サーバから、前記リクエストに対するレスポンスとして、前記第１処理結果と対応し、かつ前記処理対象データに対する前記サーバ側処理の実行による第２処理結果を受信する第２通信ステップと、
前記第２処理結果が前記クライアント装置に送信されているか否かを判定する判定ステップと、
前記第２処理結果が前記クライアント装置に送信されていないと判定された場合に、前記第１処理結果を前記レスポンスとして前記クライアント装置に送信する第３通信ステップと、
を含むことを特徴とする中継方法。
【請求項１９】
クライアント装置とサーバとにネットワークで接続され、前記クライアント装置と前記サーバの間で中継を行うコンピュータに実行させるためのプログラムであって、
前記ネットワークを介して、前記クライアント装置から、処理対象となる処理対象データと、前記サーバを示す宛先情報とを含むリクエストを受信する第１通信ステップと、
前記処理対象データに対して前記サーバで実行するサーバ側処理と同等のアルゴリズムの中継機器側処理を、前記処理対象データに対して実行して前記中継機器側処理の実行による第１処理結果を得るデータ処理ステップと、
前記リクエストを前記サーバに送信し、前記サーバから、前記リクエストに対するレスポンスとして、前記第１処理結果と対応し、かつ前記処理対象データに対する前記サーバ側処理の実行による第２処理結果を受信する第２通信ステップと、
前記第２処理結果が前記クライアント装置に送信されているか否かを判定する判定ステップと、
前記第２処理結果が前記クライアント装置に送信されていないと判定された場合に、前記第１処理結果を前記レスポンスとして前記クライアント装置に送信する第３通信ステップと、
を前記コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中継機器、中継方法およびプログラムに関する。
【背景技術】
【０００２】
ＳａａＳ（ｓｏｆｔｗａｒｅ  ａｓ  ａ  ｓｅｒｖｉｃｅ）時代においては、大容量のデータをネットワークにより送信し、ネットワークの向こう側のクラウド上でデータ処理を行い、その結果が返ってくるのを待つというようなことが一般的になる。しかしながら、ネットワークの速度がボトルネックとなり、処理結果の受信などサービスの応答時間が長くなる場合がある。Ｗｅｂサービスにおいては、ユーザが許容できる応答時間は、４秒であるというようなデータもあり、システムはできる限りすばやく応答を返す必要がある。このようなニーズに答えるものとして、例えば、プロキシサーバのキャッシュのように、既に取得したデータを中継機器に保存しておき、キャッシュにヒットした場合にすばやく応答するというような技術が既に知られている。
【０００３】
また、特許文献１には、キャッシュを備えワイドエリアネットワークに接続されるプロキシサーバとキャッシュを備えるワールドワイドウェブブラウザが動作する１以上のクライアントとがローカルエリアネットにより接続されるプロキシサーバキャッシュシステムが開示されている。このシステムにおいては、ワールドワイドウェブブラウザが表示するデータがプロキシサーバのキャッシュに存在しない場合に、他のクライアントのキャッシュからデータを読み出し、ワールドワイドウェブブラウザに表示することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のような従来のプロキシサーバのキャッシュの仕組みでは、例えば、画像ファイルのような静的なファイルに関する応答速度の向上は期待できるものの、クラウド上での大容量データの処理結果の応答速度の向上は期待できない。また、上述の特許文献１にかかるシステムにおいても同様である。
【０００５】
本発明は、上記に鑑みてなされたものであって、ネットワークを利用したデータ処理の応答速度を向上させることのできる中継機器、中継方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明にかかる中継装置は、クライアント装置とサーバとにネットワークで接続され、前記クライアント装置と前記サーバの間で中継を行う中継機器であって、前記ネットワークを介して、前記クライアント装置から、処理対象となる処理対象データと、前記サーバを示す宛先情報とを含むリクエストを受信する第１通信部と、前記処理対象データに対して前記サーバで実行するサーバ側処理と同等のアルゴリズムの中継機器側処理を、前記処理対象データに対して実行して前記中継機器側処理の実行による第１処理結果を得るデータ処理部と、前記リクエストを前記サーバに送信し、前記サーバから、前記リクエストに対するレスポンスとして、前記第１処理結果と対応し、かつ前記処理対象データに対する前記サーバ側処理の実行による第２処理結果を受信する第２通信部と、前記第２処理結果が前記クライアント装置に送信されているか否かを判定する制御部と、を備え、前記第１通信部は、前記第２処理結果が前記クライアント装置に送信されていないと判定された場合に、前記第１処理結果を前記レスポンスとして前記クライアント装置に送信することを特徴とする。
【０００７】
本発明にかかる中継方法は、クライアント装置とサーバとにネットワークで接続され、前記クライアント装置と前記サーバの間で中継を行う中継機器で実行される中継方法であって、前記ネットワークを介して、前記クライアント装置から、処理対象となる処理対象データと、前記サーバを示す宛先情報とを含むリクエストを受信する第１通信ステップと、前記処理対象データに対して前記サーバで実行するサーバ側処理と同等のアルゴリズムの中継機器側処理を、前記処理対象データに対して実行して前記中継機器側処理の実行による第１処理結果を得るデータ処理ステップと、前記リクエストを前記サーバに送信し、前記サーバから、前記リクエストに対するレスポンスとして、前記第１処理結果と対応し、かつ前記処理対象データに対する前記サーバ側処理の実行による第２処理結果を受信する第２通信ステップと、前記第２処理結果が前記クライアント装置に送信されているか否かを判定する判定ステップと、前記第２処理結果が前記クライアント装置に送信されていないと判定された場合に、前記第１処理結果を前記レスポンスとして前記クライアント装置に送信する第３通信ステップと、を含むことを特徴とする。
【０００８】
また、本発明にかかるプログラムは、クライアント装置とサーバとにネットワークで接続され、前記クライアント装置と前記サーバの間で中継を行うコンピュータに実行させるためのプログラムであって、記ネットワークを介して、前記クライアント装置から、処理対象となる処理対象データと、前記サーバを示す宛先情報とを含むリクエストを受信する第１通信ステップと、前記処理対象データに対して前記サーバで実行するサーバ側処理と同等のアルゴリズムの中継機器側処理を、前記処理対象データに対して実行して前記中継機器側処理の実行による第１処理結果を得るデータ処理ステップと、前記リクエストを前記サーバに送信し、前記サーバから、前記リクエストに対するレスポンスとして、前記第１処理結果と対応し、かつ前記処理対象データに対する前記サーバ側処理の実行による第２処理結果を受信する第２通信ステップと、前記第２処理結果が前記クライアント装置に送信されているか否かを判定する判定ステップと、前記第２処理結果が前記クライアント装置に送信されていないと判定された場合に、前記第１処理結果を前記レスポンスとして前記クライアント装置に送信する第３通信ステップとを前記コンピュータに実行させる。
【発明の効果】
【０００９】
本発明によれば、ネットワークを利用したデータ処理の応答速度を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施の形態にかかる中継システムの全体構成を示す図である。
【図２】図２は、中継機器の機能的構成を示すブロック図である。
【図３】図３は、レスポンステーブル２０８のデータ構成の一例を示す説明図である。
【図４】図４は、サーバの機能的構成を示すブロック図である。
【図５】図５は、同等のアルゴリズムのＯＣＲプログラムの処理単位が異なる場合の説明図である。
【図６】図６は、クライアント装置がリクエストを送信した場合の処理を示す通信シーケンス図である。
【図７】図７は、中継機器とサーバの処理を説明するための図である。
【図８】図８は、中継機器とサーバの処理を説明するための図である。
【図９】図９は、データ処理を開始した後の中継機器の詳細な処理を示すフローチャートである。
【図１０】図１０は、リクエストを示す図である。
【図１１−１】図１１−１は、第１処理結果Ｒ１を含むレスポンスを示す図である。
【図１１−２】図１１−２は、第２処理結果Ｒ２を含むレスポンスを示す図である。
【図１２】図１２は、サーバからのレスポンスを示す図である。
【図１３】図１３は、クライアント装置に送信されるレスポンスを示す図である。
【図１４】図１４は、第２の実施の形態にかかる中継機器の機能的構成を示すブロック図である。
【図１５】図１５は、第２の実施の形態にかかる処理を示す通信シーケンス図である。
【図１６】図１６は、第２の実施の形態にかかる中継機器の詳細な処理を示すフローチャートである。
【図１７】図１７は、第２の実施の形態変更例にかかる処理を示す通信シーケンス図である。
【図１８】図１８は、サーバ３０に送信されるリクエストを示す図である。
【図１９】図１９は、第３の実施の形態にかかる中継機器の機能的構成を示すブロック図である。
【図２０】図２０は、第３の実施の形態にかかる処理を示す通信シーケンス図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、この発明にかかる中継機器、中継方法およびプログラムの最良な実施の形態を詳細に説明する。
【００１２】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかる中継システムの全体構成を示す図である。中継システムは、ネットワークを介して接続されたクライアント装置１０と、中継機器２０、２２ａ〜２２ｄと、サーバ３０とを備えている。クライアント装置１０と、中継機器２０とは、例えばＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介して接続している。中継機器２０、中継機器２２ａ〜２２ｄおよびサーバ３０は、例えばインターネットを介して接続している。クライアント装置１０は、中継機器２０を介してインターネットに接続し、サーバ３０にアクセスすることができる。なお、クライアント装置１０とサーバ３０の通信においては、中継機器２０の他、４つの中継機器２２ａ〜２２ｄを経由するものとする。なお、他の例としては、クライアント装置１０と中継機器２０は、インターネットを介して接続してもよい。
【００１３】
このように、クライアント装置１０とサーバ３０との通信においては、複数の中継機器を経由するので、クライアント装置１０がネットワークを通じて大容量のデータを送信し、サーバ３０にその処理を行わせる場合には、サーバ３０から処理結果が返ってくるまで長い時間を要する。さらに、例えば、クライアント１０は日本に設置され、サーバ３０はアメリカに設置されているような場合には、特に応答までの時間が長くなってしまう。本実施の形態の中継システムにおいては、中継機器２０がサーバ３０の処理の一部を担当することにより、より短い待ち時間で、クライアント装置１０に処理結果を返す。
【００１４】
ここで、中継機器２０は、例えば、ルータやハブ等が該当するが、これに限定されるものではなく、ＰＣ（パーソナルコンピュータ）等の通常のコンピュータの構成としてもよい。また、サーバ３０は、大型コンピュータやワークステーション等が該当する。
【００１５】
中継機器２０の処理能力は、サーバ３０の処理能力より劣っているものとする。より具体的には、例えば、中継機器２０のＣＰＵのクロック数等で示されるＣＰＵパワーは、サーバ３０の同様のＣＰＵパワーより劣っており、例えば、中継機器２０のＣＰＵのクロック数が、サーバのクロック数より小さい等である。なお、処理能力としては、ＣＰＵのクロック数に限定されるものではなく、装置の処理能力を示すものであればいずれも該当する。
【００１６】
図２は、中継機器２０の機能的構成を示すブロック図である。中継機器２０は、図２に示すように、第１通信部２０１と、第２通信部２０２と、制御部２０３と、リクエスト記憶部２０４と、プログラム記憶部２０５と、データ処理部２０６と、レスポンス管理部２０７と、レスポンステーブル２０８とを備えている。
【００１７】
第１通信部２０１は、ＬＡＮを介してクライアント装置１０とデータを送受信する。第１通信部２０１は、例えば、クライアント装置１０からサーバ３０へのリクエストを受信し、リクエストに対するレスポンスをクライアント装置１０に送信する。ここで、リクエストには、処理を希望するデータ、すなわち所定の処理が実行される対象となる（処理対象となる）処理対象データ、処理対象データの処理を行うサーバを示す宛先情報、処理の種類を示す処理種情報などを含んでいる。第２通信部２０２は、インターネットを介して、他の中継機器２２ａ〜２２ｄ等を介してサーバ３０との間でデータを送受信する。
【００１８】
制御部２０３は、第１通信部２０１および第２通信部２０２を制御し、受信データ、送信データを管理する。また、制御部２０３は、ルーティングテーブルを参照し、リクエストに含まれる宛先情報に基づいて、リクエストを転送すべき次の中継機器を特定する。リクエスト記憶部２０４は、クライアント装置１０から受信したリクエストを一時的に記憶する。なお、リクエスト記憶部２０４は、例えば主記憶メモリ等である。
【００１９】
プログラム記憶部２０５は、クライアント装置１０から受信したデータを処理するためのプログラム（中継機器側プログラム）を記憶している。プログラム記憶部２０５に記憶されているプログラムは、サーバ３０に記憶されているプログラム（サーバ側プログラム）と同等のアルゴリズム（ロジック）となっている。すなわち、プログラム記憶部２０５は、ある機能について本来、サーバ３０側で実行されるべきプログラムと同等のアルゴリズムのプログラムを、中継機器２０に実行させるために格納している。
【００２０】
プログラム記憶部２０５のプログラムは、サーバ３０から取得してもよい。また、プログラム記憶部２０５は、複数のプログラムを記憶してもよい。なお、プログラムのアルゴリズム（ロジック）が同等である点の詳細については後述する。
【００２１】
データ処理部２０６は、クライアント装置１０から受信したリクエストを解析して、リクエストに含まれる処理種情報等から、当該リクエストに対応するプログラムを、プログラム記憶部２０５から読み出す。そして、データ処理部２０６は、処理対象となる処理対象データに対する処理（中継機器側処理）を、読み出したプログラムにより実行する。
【００２２】
なお、中継機器２０におけるデータ処理部２０６は、サーバ３０と同等のアルゴリズム（ロジック）のプログラムにより処理を行うが、その処理能力は、上述したＣＰＵパワーの相違から、サーバ３０に比べて劣っている。データ処理部２０６により得られた処理結果は、サーバ３０へのリクエストに対するレスポンスとして、クライアント装置１０に送信される。
【００２３】
レスポンス管理部２０７は、クライアント装置１０のリクエストに対するレスポンスを管理する。レスポンス管理部２０７は、クライアント装置１０にレスポンスを返すと、レスポンスの履歴をレスポンステーブル２０８に登録する。ここで、レスポンステーブル２０８は、ハードディスクドライブ装置（ＨＤＤ）やメモリ等の記憶媒体に格納されている。
【００２４】
図３は、レスポンステーブル２０８のデータ構成の一例を示す説明図である。レスポンス管理部２０７は、第１通信部２０１がリクエストを受信するとセッションＩＤをレスポンステーブル２０８に書き込む。セッションＩＤは、リクエストおよびこれに対応するレスポンスを一意に識別するための固有の情報である。本実施の形態では、セッションＩＤとして、リクエストを一意に識別するためのリクエストＩＤから生成されるが、これに限定されるものではない。
【００２５】
中継機器２０はまた、データ処理部２０６がこのリクエストに対する処理を実行し、第１通信部２０１が、データ処理部２０６による処理結果をレスポンスとしてクライアント装置１０に送信した場合に、送信した処理結果を識別する情報をセッションＩＤに対応するカラムに書き込む。ここで、本実施の形態では、送信した処理結果を識別する情報として、処理結果のデータの先頭からのバイト数を用いている、これに限定されるものではない。
【００２６】
さらに、通常の中継機器の処理として、サーバ３０からリクエストに対するレスポンスである処理結果を受信した場合には、レスポンス管理部２０７は、このレスポンス、すなわちサーバ３０による処理結果を識別する情報を、サーバ３０から受信したリクエストのセッションＩＤに対応するカラムに書き込む。
【００２７】
なお、図３に示す例においては、各処理結果を識別する情報は、処理結果のデータの先頭からのバイト数で記憶されている。例えば、セッションＩＤ「８５５４４０ｆ７ｅ８」で識別されるレスポンスは、先頭から２００バイトまでの処理結果がクライアント装置１０にレスポンスとして送信済みであることがわかる。
【００２８】
以降、説明の便宜上、中継機器２０において得られた、リクエストに対応する処理結果を第１処理結果、サーバ３０において得られた、リクエストに対応する処理結果を第２処理結果と称する。ここで、中継機器２０のプログラム記憶部２０５に記憶されたプログラム（中継機器側プログラム）とサーバ３０のプログラム記憶部３０４に記憶されたプログラム（サーバ側プログラム）は同等のアルゴリズムであるため、あるリクエストに対する第１処理結果と、この第１処理結果に対応する第２処理結果、すなわち、同一のリクエストに対応する第２処理結果は同一となる。
【００２９】
図４は、サーバ３０の機能的構成を示すブロック図である。サーバ３０は、図４に示すように、通信部３０１と、制御部３０２と、リクエスト記憶部３０３と、プログラム記憶部３０４と、データ処理部３０５と、処理結果記憶部３０６とを備えている。
【００３０】
通信部３０１は、インターネットを介して、中継器２２ａ〜２２ｄ等とデータを送受信する。制御部３０２は、通信部３０１を制御し、受信データおよび送信データを管理する。リクエスト記憶部３０３は、通信部３０１が受信したリクエストを一時的に格納する。リクエスト記憶部３０３は、例えば主記憶メモリ等である。
【００３１】
プログラム記憶部３０４は、リクエストに含まれる処理対象データを処理するためのプログラム（サーバ側プログラム）を機能ごとに記憶している。ある機能において、プログラム記憶部３０４のプログラムと、中継機器２０のプログラム記憶部２０５のプログラムは、同等のアルゴリズム（ロジック）である。すなわち、中継機器２０のプログラム記憶部２０５は、本来、サーバ３０側で実行されるべきプログラムと同等のアルゴリズムのプログラムを、中継機器２０に実行させるために格納している。
【００３２】
ここで、同等のアルゴリズム（ロジック）とは、処理対象データの処理順序が同一であり、かつプログラム実行完了時における最終的な処理結果が同一であることをいう。例えば、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を実行するＯＣＲプログラムが、次のような指令から構成されるとする。
【００３３】
読み込み指令
ＯＣＲ指令
送信指令
【００３４】
この例において、読み込み指令は、スキャンした画像データ（あるいは当該指令のパラメータ等で画像データファイル名等が指定されている場合には指定された画像データ）を読み込む指令とする。ＯＣＲ指令は、読み込み指令で読み込んだデータに対して、先頭から順に文字認識処理（ＯＣＲ処理）を実行し、そのＯＣＲ結果として文字認識されたデータ出力する（あるいはＯＣＲ指令のパラメータ等でデータファイル名等が指定されている場合には、指定されたデータに保存する）ものとする。送信指令は、ＯＣＲ処理結果としての文字認識されたデータあるいは文字認識結果が保存された上記データを送信するものとする。
【００３５】
この場合、このＯＣＲプログラムと同等のアルゴリズムのＯＣＲプログラムとしては、指令の名称を問わず、また、処理対象データを先頭からＯＣＲ処理するという処理順序が同一であり、最終的に出力されるＯＣＲ結果としてのテキストデータの内容が同一であればよい。
【００３６】
サーバ３０のプログラム記憶部３０４が記憶するプログラムと、中継機器２０のプログラム記憶部２０５が記憶するプログラムは、同等のアルゴリズム、すなわち、処理順序が同一であり、かつ最終的な処理結果が同一となればよく、他の条件は異なっていてもよい。例えば、サーバ３０のプログラムと中継機器２０のプログラムにおいて、処理対象データの処理単位等は異なっていてもよい。すなわち、上述したとおり、中継機器２０のＣＰＵパワー等の処理能力がサーバ３０の処理能力より低いことから、中継機器２０における処理対象データの処理単位がサーバ３０における処理単位より小さい場合がある。本実施の形態では、このような場合でも、サーバ３０のプログラムと処理順序が同一であり、かつ最終的な処理結果が同一となるようなアルゴリズムが同等のプログラムを中継機器２０で実行して、サーバ３０でプログラムを実行した場合と同一の処理結果を得ることができる。
【００３７】
上記ＯＣＲプログラムを例にあげると、ＯＣＲ指令の処理単位は、中継機器２０側のＯＣＲプログラムとサーバ３０側のＯＣＲプログラムとで異なっていてもよい。図５は、同等のアルゴリズムのＯＣＲプログラムの処理単位が異なる場合の説明図である。
【００３８】
図５に示すように、中継機器２０のＯＣＲプログラムは、処理対象データである複数ページに亘る画像データを１ページ単位に分割して、画像データを先頭から処理単位として１ページ単位でＯＣＲ処理を行い、１ページ分のＯＣＲ処理が完了するごとに、レスポンスとしてＯＣＲ結果を送信し、これを複数行分繰り返すことで、１ページ単位でＯＣＲ結果を送信するものとする。一方、サーバ３０のＯＣＲプログラムは、処理対象データである複数ページに亘る画像データを、先頭から複数ページを処理単位として一括して複数ページ分のＯＣＲ処理を行い、複数ページ分のＯＣＲ処理が完了すると、レスポンスとして、複数ページ分のＯＣＲ処理結果を送信するものとする。この場合、中継機器２０のＯＣＲプログラムとサーバ３０のＯＣＲプログラムにおいて、画像データの処理順序は同一であり、送信された全テキストデータの内容、すなわち最終的なＯＣＲ処理結果は同一となる。このため、中継機器２０のＯＣＲプログラムとサーバ２０のＯＣＲプログラムは、同等のアルゴリズムである。一方、中継機器２０のＯＣＲプログラムの処理単位は１ページ、サーバ３０の処理単位は１画像データであるため、中継機器２０のＯＣＲプログラムの処理単位とサーバ２０のＯＣＲプログラムの処理単位は異なっていることになる。
【００３９】
また、中継機器２０のＯＣＲプログラムは、処理対象データである画像データを先頭から処理単位として１行単位でＯＣＲ処理を行い、１行分のＯＣＲ処理が完了するごとに、レスポンスとしてＯＣＲ結果を送信し、これを複数行分繰り返すことで、１行単位でＯＣＲ結果を送信するものとする。一方、サーバ３０のＯＣＲプログラムは、処理対象データである画像データを、先頭から１ページを処理単位として一括して複数ページ分のＯＣＲ処理を行い、１ページ分のＯＣＲ処理が完了すると、レスポンスとして、１ページ分のＯＣＲ処理結果を送信するものとする。この場合も、上記例と同様に、中継機器２０のＯＣＲプログラムとサーバ２０のＯＣＲプログラムは同等のアルゴリズムである一方、中継機器２０のＯＣＲプログラムの処理単位は１行、サーバ３０の処理単位は１ページであるため、中継機器２０のＯＣＲプログラムの処理単位とサーバ２０のＯＣＲプログラムの処理単位は異なっていることになる。
【００４０】
データ処理部３０５は、プログラム記憶部３０４が記憶しているプログラムを実行することにより、処理対象データに対する処理（サーバ側処理）を実行する。処理結果記憶部３０６は、データ処理部３０５により得られた第２処理結果を記憶する。
【００４１】
図６は、クライアント装置１０がリクエストを送信した場合の処理を示す通信シーケンス図である。クライアント装置１０がリクエストを送信すると（ステップＳ１００）、中継機器２０においては、第１通信部２０１がクライアント装置１０から送信されたリクエストを受信し、制御部２０３は、リクエストに含まれる宛先情報と自身の有するルーティングテーブルに基づいて、リクエストの次の転送先を決定する。そして、制御部２０３の制御の下、第２通信部２０２は、決定された転送先にリクエストを転送する（ステップＳ１０２）。
【００４２】
サーバ３０は、クライアント装置１０により送信され、中継機器２０にて転送されたリクエストを受信すると、このリクエストをリクエスト記憶部３０３に一時的に格納する。そして、データ処理部３０５は、リクエストに含まれる処理種情報等から、当該リクエストに対応するプログラムをプログラム記憶部３０４から読み出して、読み出したプログラムを利用して、リクエストに含まれる処理対象データに対する処理の実行を開始する（ステップＳ１１０）。そして、例えば、１ページ分など予め定まった量の処理対象データに対する処理が完了すると、すなわちクライアント装置１０にレスポンスを返すに十分な結果が得られると、制御部３０２の制御の下、通信部３０１を介してデータ処理部３０５により得られた第２処理結果Ｓｘ（ｘ＝１，２，・・・ｍ）がリクエストに対するレスポンスとして中継機器２０宛てに送信される（ステップＳ１１２）。なお、サーバ３０は、データ処理を開始すると、処理により得られたすべての第２処理結果Ｓを処理結果記憶部３０６に格納する（ステップＳ１１４）。
【００４３】
一方、中継機器２０においては、クライアント装置１０からリクエストを受信すると（ステップＳ１００）、データ処理部２０６は、リクエストに含まれる処理種情報等から、当該リクエストに対応するプログラムをプログラム記憶部２０５から読み出して、読み出したプログラムを利用して、リクエストに含まれる処理対象データに対する処理の実行を開始する（ステップＳ１０４）。そして、例えば、１ページ分、または１行分など予め定まった量の処理対象データに対する処理が完了すると、制御部２０３の制御の下、第１通信部２０１を介してデータ処理部２０６により得られた第１処理結果Ｒｘ（ｘ＝１，２，・・・ｍ）がレスポンスとしてクライアント装置１０に送信される（ステップＳ１０６）。
【００４４】
このとき、中継機器２０のレスポンス管理部２０７は、リクエストに対するレスポンスを送信する度に、レスポンステーブル２０８を更新する。具体的には、クライアント装置１０に送信済みの第１処理結果Ｒｘを識別する情報を、レスポンステーブル２０８に記憶していく。レスポンス管理部２０７は、さらにサーバ３０からレスポンスを受信した場合も（ステップＳ１１２）、レスポンステーブル２０８を更新する。具体的には、クライアント装置１０に送信済みの第２処理結果Ｓｘを識別する情報をレスポンステーブル２０８に記憶する。
【００４５】
中継機器２０の制御部２０３は、サーバ３０からリクエストに対するレスポンスとして受信した第２処理結果Ｓｘと同一の第１処理結果Ｒｘ（第２処理結果Ｓｘに対応する第１処理結果Ｒｘ）がクライアント装置１０に送信されているか否かを、レスポンステーブル２０８の該当セッションＩＤに対応する第１処理結果Ｒｘを識別する情報の登録の有無を判定することにより判断する（ステップＳ１２０）。すなわち、制御部２０３は、レスポンステーブル２０８において、該当セッションＩＤに対応する第１処理結果Ｒｘを識別する情報が登録されていない場合には、第２処理結果Ｓｘと同一の第１処理結果Ｒｘがクライアント装置１０に送信されていると判断する。一方、制御部２０３は、レスポンステーブル２０８において、該当セッションＩＤに対応する第１処理結果Ｒｘを識別する情報が登録されている場合には、第２処理結果Ｓｘと同一の第１処理結果Ｒｘがクライアント装置１０にまだ送信されていないと判断する。
【００４６】
そして、中継機器２０の制御部２０３は、サーバ３０からリクエストに対するレスポンスとして受信した第２処理結果Ｓｘと同一の第１処理結果Ｒｘがクライアント装置１０に送信されていないと判断した場合には、サーバ３０からのレスポンスＳｘが中継機器２０により得られたレスポンスＲｘに追いついたと判断し（ステップＳ１２０，Ｙｅｓ）、これ以降は、サーバ３０から受信したレスポンスＳｘをクライアント装置１０に送信する（ステップＳ１２２）。そして、データ処理部２０６によるデータ処理を終了する（ステップＳ１２４）。
【００４７】
図７および図８を参照しつつ、以上の処理を具体的に説明する。図７に示すように、中継機器２０は、クライアント装置１０からリクエストを受信すると、直ちに処理を開始することができる。従って、サーバに比べてより早いタイミングで、最初のレスポンスを返すことができる。
【００４８】
図７に示す例においては、中継機器によって第１処理結果Ｒ１，Ｒ２がクライアント装置１０に送信された後に、サーバ３０から第１処理結果Ｒ１と同一の結果である第２処理結果Ｓ１が中継機器２０に到着する。この場合には、第２処理結果Ｓ１は削除される。同様に、第２処理結果Ｓ２，Ｓ３も削除される。そして、第２処理結果Ｓ４が中継機器２０に到着したときには、中継機器２０においては、第２処理結果Ｓ４と同一の結果である第１処理結果Ｒ４はまだ得られていない。ここで、サーバ３０からのレスポンスが追いついたこととなる。この場合、中継機器２０は、サーバ３０から受信した第２処理結果Ｓ４をレスポンスとしてクライアント装置１０に送信する。さらに、自身のデータ処理部２０６による処理を終了する。
【００４９】
図８に示す例においては、中継機器２０は、処理対象データに対しページ単位でレスポンスを返し、サーバ３０は処理対象データ全体を単位としてレスポンスを返すこととする。なお、処理対象データは、１０ページで構成されているものとする。サーバ３０からのレスポンスが中継機器２０が第１処理結果Ｒ１，Ｒ２をレスポンスとしてクライアント装置１０に送信した後であって、第１処理結果Ｒ３はまだ送信されていないタイミングで、サーバ３０からレスポンスとして第２処理結果Ｓ（Ｓ１〜Ｓ１０）を受信すると、中継機器２０は、サーバ３０から受信したレスポンスに含まれる第２処理結果Ｓ１〜Ｓ１０のうち、既にクライアント装置１０に送信済みの第１処理結果Ｒ１，Ｒ２と同一の第２処理結果Ｓ１，Ｓ２を削除し、第２処理結果Ｓ３〜Ｓ１０をレスポンスとしてクライアント装置１０に送信する。
【００５０】
このように、本実施の形態においては、サーバ３０からレスポンスが返ってくる前に、中継機器２０からクライアント装置１０にレスポンスを返すことができる。すなわち、本実施の形態にかかる中継機器２０は、クライアント装置１０からリクエストを受信すると、サーバ３０側で本体行うべき処理のプログラムと同等のアルゴリズムのプログラムの実行を、サーバ３０と並行して行い、自身の処理により得られた処理結果を、リクエストに対するレスポンスとしてサーバ３０に代わってクライアント装置１０に送信する。また、サーバ３０側で本体行うべき処理のプログラムと同等のアルゴリズムのプログラムであって、サーバ３０側のプログラムと処理単位が異なるプログラムの実行を中継機器２０で行っている。
【００５１】
図９は、データ処理を開始した後の中継機器２０の詳細な処理を示すフローチャートである。図９を参照しつつ、クライアント装置１０に送信するレスポンスとして、第１処理結果Ｒｘと第２処理結果Ｓｘのいずれを送信するかを制御する処理について説明する。なお、図９に示す処理は、一つのセッションにおける処理を示し、他のセッションにおける処理については、図９の処理がセッションごとに別個に実行される。
【００５２】
中継機器２０においては、データ処理部２０６により、リクエストに含まれる処理対象データに対する処理が開始すると（ステップＳ２００）、制御部２０３は、リクエストに対するレスポンスとして送信可能な単位の処理結果である第１処理結果Ｒｘが得られたか否かを監視する。第１処理結果Ｒｘが得られた場合には（ステップＳ２０２，Ｙｅｓ）、制御部２０３はさらにレスポンステーブル２０８を参照し、ステップＳ２０２において確認された第１処理結果Ｒｘと同一の第２処理結果Ｓｘがサーバ３０から既に受信されており、クライアント装置１０に送信済みであるか否かを判定する。  
【００５３】
第２処理結果Ｒｘをクライアント装置１０に送信済みである場合には、レスポンステーブル２０８に第２処理結果Ｓｘを示す情報が書き込まれている。したがって、第２処理結果Ｓｘを示す情報の有無により、第２処理結果Ｓｘを既に送信済みであるか否かを判定することができる。
【００５４】
第２処理結果Ｓｘを既に送信済みでない場合には（ステップＳ２０４，Ｎｏ）、制御部２０３の制御の下、第１通信部２０１は、第１処理結果Ｒｘをレスポンスとしてクライアント装置１０に送信し（ステップＳ２０６）、ステップＳ２００に戻る。このとき、レスポンス管理部２０７は、レスポンステーブル２０８に第１処理結果Ｒｘを示す情報を書き込む。すなわち、レスポンステーブル２０８を更新する。これにより、サーバ３０から第２処理結果Ｓｘを受信する前にクライアント装置１０にレスポンスを返すことができる。
【００５５】
一方、ステップＳ２０４において、第２処理結果Ｓｘをクライアント装置１０に既に送信済みである場合には（ステップＳ２０４，Ｙｅｓ）、制御部２０３は、第１処理結果Ｒｘを削除する（ステップＳ２１０）。なお、第２処理結果Ｓｘをクライアント装置１０に送信済みであるということは、サーバ３０からのレスポンスが中継機器２０のレスポンスに追いついたことを示している。従って、この場合には、データ処理部２０６による処理、すなわち、当該セッションにおいてサーバ３０のプログラム実行を代行して実行している処理を終了する（ステップＳ２１２）。言い換えると、異なる複数のセッションごとに別個の処理が実行されている場合において、本セッションのデータ処理のみが終了する。これにより、サーバ３０の第２処理結果Ｓｘと同一の処理尾結果を重複してクライアント装置１０に送信するのを防ぐことができる。さらに、データ処理部２０６の処理を終了することにより、中継機器２０の不要な処理負荷を軽減することができる。
【００５６】
そして、中継機器２０は、これ以降、通常通りの処理、すなわちサーバ３０から受信したレスポンスをクライアント装置１０に送信する処理を行う（ステップＳ２１４）。そして、すべてのレスポンスのクライアント装置１０への転送が完了すると（ステップＳ２１６，Ｙｅｓ）、セッションを終了し処理が完了する。
【００５７】
また、データ処理開始（ステップＳ２００）の後、サーバ３０より第２処理結果Ｓｘが得られた場合には（ステップＳ２０２，Ｎｏ、ステップＳ２２０，Ｙｅｓ）、制御部２０３は、レスポンステーブル２０８を参照し、サーバ３０から受信した第２処理結果Ｓｘと同一の第１処理結果Ｒｘが既にクライアント装置１０に送信済みであるか否かを判定する。第１処理結果Ｓｘをクライアント装置１０に送信済みである場合には、レスポンステーブル２０８に第１処理結果Ｒｘを示す情報が書きこまれている。したがって、第１処理結果Ｒｘを示す情報の有無により、第１処理結果Ｒｘを既に送信済みであるか否かを判定することができる。
【００５８】
第１処理結果Ｒｘを送信済みでない場合には（ステップＳ２２２，Ｎｏ）、制御部２０３の制御の下、第１通信部２０１は、第２処理結果Ｓｘをレスポンスとしてクライアント装置１０に送信する（ステップＳ２２４）。
【００５９】
このとき、レスポンス管理部２０７は、レスポンステーブル２０８に第２処理結果Ｓｘを示す情報を書き込む。すなわち、レスポンステーブル２０８を更新する。このように、第２処理結果Ｓｘをクライアント装置１０に送信したということは、サーバ３０からのレスポンスが中継機器２０からのレスポンスに追いついたことを示している。従って、この場合には、ステップＳ２１２に進み、データ処理部２０６による処理を終了する（ステップＳ２１２）。
【００６０】
一方、ステップＳ２２２において、サーバ３０から受信した第２処理結果Ｓｘと同一の第１処理結果Ｒｘをクライアント装置１０に既に送信している場合には（ステップＳ２２２，Ｙｅｓ）、制御部２０３は、サーバ３０から受信した第２処理結果Ｓｘを削除し（ステップＳ２２６）、ステップＳ２００に戻る。
【００６１】
以上のように、中継機器２０は、レスポンステーブル２０８を利用して、クライアント装置１０に送信済みの処理結果を管理することにより、重複した処理結果をクライアント装置１０に送信することなく、中継機器２０またはサーバ３０により得られた処理結果を適切にクライアント装置１０に送信することができる。
【００６２】
なお、例えば通常処理（ステップＳ２１４）が開始した場合には、中継機器２０による処理結果とサーバ３０による処理結果の管理は不要となる。そこで、レスポンス管理部２０７は、このタイミングで対応するデータをレスポンステーブルから削除してもよい。これにより、メモリを有効に活用することができる。
【００６３】
次に、ｈｔｔｐを利用して、１０ページのマルチページＴＩＦＦ画像すべてのページのＯＣＲ結果を取得するようなリクエストが送信された場合について説明する。図１０は、この場合のリクエストを示す図である。
【００６４】
中継機器２０は、クライアント装置１０から図１０に示すようなリクエストを受信する。中継機器２０の制御部２０３は、リクエストのリクエストラインとＨｏｓｔヘッダの情報から、処理に利用するプログラムを特定し、該当するプログラムをプログラム記憶部２０５から読み込み、データ処理を開始させる。本例においては、マルチページＴＩＦＦ画像すべてのページを１ページ単位でＯＣＲ処理を行うプログラムが読み込まれるものとする。
【００６５】
データ処理部２０６は、マルチページＴＩＦＦ画像のうちまず１ページ目のＯＣＲ処理を行い、「請求書２００９年３月３１日」という第１処理結果Ｒ１を得る。制御部２０３は、この第１処理結果Ｒ１が得られると、第１処理結果Ｒ１をレスポンスとしてクライアント装置１０に送信する。図１１−１は、第１処理結果Ｒ１を含むレスポンスを示す図である。このように、レスポンスには、データ処理部２０６により得られた第１処理結果Ｒ１が含まれている。１ページ目のレスポンスの返送に加えて、レスポンス管理部２０７は、レスポンステーブル２０８に第１処理結果Ｒ１を示す情報、具体的には０ｘ２６バイト分をレスポンス済みであることを示す情報を書き込む。
【００６６】
次に、データ処理部２０６により２ページ目のＯＲＣ処理の結果、すなわち第１処理結果Ｒ２が得られる。本例においては、２ページ目からは文字列は得られなかったものとする。制御部２０３は、この第１処理結果Ｒ２をレスポンスとしてクライアント装置１０に送信する。図１１−２は、第１処理結果Ｒ２を含むレスポンスを示す図である。このように、レスポンスには、第１処理結果Ｒ２が含まれている。なお、図１１−２に示すレスポンスは、図１１−１に示すレスポンスと同一のセッションにおいて返されるものであり、ヘッダは不要である。また、他の例としては、既に送信済みのレスポンスに追加する形で第１処理結果Ｒ２をクライアント装置１０に送信してもよい。
【００６７】
２ページ目のレスポンスの返送に加えて、レスポンス管理部２０７は、レスポンステーブル２０８に第１処理結果Ｒ２を送信済みであることを示す情報を書き込む。具体的には、１ページ目および２ページ目の処理結果の合計である０ｘ３７バイト分をレスポンス済みであることを示す情報を書き込む。
【００６８】
本例においては、データ処理部２０６が３ページ目の処理を行う前のタイミングにおいて、サーバ３０からレスポンスが返ってきたとする。なお、本例においては、サーバ３０は、チャンクではなくリクエストに対するすべてのレスポンスを一度に返すものとする。図１２は、サーバ３０からのレスポンスを示す図である。このように、サーバ３０からのレスポンスには、処理対象データとしての１０ページすべてに対する第２処理結果Ｓ１〜Ｓ１０が含まれている。このように、すべてのレスポンスを受信した場合には、中継機器２０においては、サーバ３０のレスポンスが中継機器２０のレスポンスに追いついたか否かの処理は不要であり、制御部２０３は、データ処理部２０６による処理を終了させる。
【００６９】
次に、制御部２０３は、レスポンステーブル２０８を参照し、既に記憶されている０ｘ３７バイト分のデータをサーバ３０から受信したレスポンスのボディから削除する。これにより、１ページ目および２ページ目に対する第２処理結果Ｓ１，Ｓ２が削除される。さらに、レスポンスの最後に、セッションの終了を示す０を追加する。そして、制御部２０３の制御の下、第１通信部２０１は、この編集後のレスポンスをクライアント装置１０に送信する。図１３は、クライアント装置１０に送信されるレスポンスを示す図である。このようにレスポンスには、既に送信済みの第２処理結果Ｓ１，Ｓ２は削除され、３ページから１０ページの処理結果である第２処理結果Ｓ３〜Ｓ１０のみが含まれている。
【００７０】
以上のように、本実施の形態にかかる中継機器２０は、クライアント装置１０からリクエストを受信すると、サーバ３０側で本体行うべき処理のプログラムと同等のアルゴリズムのプログラムの実行を、サーバ３０と並行して行う。そして、中継機器２０がサーバ３０によるプログラム実行の処理結果であるレスポンスを受信する前に、中継機器２０側でのプログラム実行による処理結果が得られた場合には、サーバ３０からのレスポンスを待たずに、中継機器２０でのプログラム実行により得られた処理結果を、リクエストに対するレスポンスとしてサーバ３０に代わってクライアント装置１０に送信することができる。このため、本実施の形態によれば、ネットワーク環境によりクライアント装置、中継機器２０、２２ａ，２２ｂ，２２ｃ，２２ｄ、サーバ３０それぞれの間の通信速度が遅い場合でも、クライアント装置１０は、サーバ３０のみからレスポンスを受け取る場合に比べて、リクエストに対するレスポンスを受け取るまでの待ち時間を短縮することができる。
【００７１】
また、本実施の形態の中継機器２０は、サーバ３０側で本体行うべき処理のプログラムと同等のアルゴリズムのプログラムであって、サーバ３０側のプログラムと処理単位が異なるプログラムを実行する。これにより、本実施の形態によれば、中継機器２０のＣＰＵパワー等の処理能力がサーバ３０の処理能力より低い場合でも、中継機器２０側での処理時間が増大することなく、サーバ３０側での処理結果と同一の処理結果を中継機器２０側で得てクライアント装置１０に送信することができる。
【００７２】
（第２の実施の形態）
第２の実施の形態においては、中継機器において処理を行う範囲、すなわち第１範囲が予め定められており、中継機器は、処理対象データのうち第１範囲の処理のみを行う。この点で、第２の実施の形態にかかる中継機器は、第１の実施の形態にかかる中継機器２０と異なっている。
【００７３】
図１４は、第２の実施の形態にかかる中継機器２２の機能的構成を示すブロック図である。第２の実施の形態にかかる中継機器２２は、図１４に示すように、第１通信部２０１と、第２通信部２０２と、制御部２０３と、リクエスト記憶部２０４と、プログラム記憶部２０５と、データ処理部２０６と、レスポンス管理部２０７と、リクエスト編集部２２０と、レスポンステーブル２０８とを備えている。ここで、第１通信部２０１、第２通信部２０２、リクエスト記憶部２０４、プログラム記憶部２０５、データ処理部２０６、レスポンス管理部２０７、レスポンステーブル２０８については、第１の実施の形態と同様である。
【００７４】
リクエスト編集部２２０は、第１通信部２０１が受信したリクエストに含まれる処理対象データから第１範囲を削除して、第１範囲削除後のリクエストをリクエスト記憶部２０４に一時的に格納する。ここで、第１範囲は、例えば１ページなど所定の範囲である。他の例としては、処理対象データ全体で５ページ以上となる場合に限り、１ページ分を第１範囲として削除してもよい。また、他の例としては、全体の１０％など処理対象データ全体に対する割合として定められていてもよい。
【００７５】
制御部２０３は、第１範囲以外の範囲である第２範囲の処理対象データを含むリクエストをリクエスト記憶部２０４から読み込んで、第２通信部２０２は、制御部２０３の制御の下、読み込んだリクエストを、サーバ３０を宛て先として送信する。したがって、サーバ３０は、第２範囲の処理対象データのみを受信することとなり、この範囲の処理対象データについて処理を行い、リクエストを返す。
【００７６】
図１５は、第２の実施の形態にかかる処理を示す通信シーケンス図である。クライアント装置１０がリクエストを送信すると（ステップＳ２００）、中継機器２２の第１通信部２０１がクライアント装置１０からリクエストを受信する。そして、中継機器２２の制御部２０３は、受信したリクエストに含まれる処理対象データから第１範囲を削除する（ステップＳ２０２）。第１範囲を削除されたリクエストは、リクエスト編集部２２０によってリクエスト記憶部２０４に保存され、制御部２０３によって読み出される。次に、制御部２０３の制御の下、第２通信部２０２は、削除後の処理対象データを含むリクエストをサーバ３０に転送する（ステップＳ２０４）。サーバ３０においては、第２範囲の処理対象データに対する処理を開始する（ステップＳ２２０）。
【００７７】
そして、第２処理結果Ｓｘが得られると、これをリクエストに対するレスポンスとして中継機器２２に送信する（ステップＳ２２２）。一方、中継機器２２においては、リクエストを受信すると、データ処理部２０６は、第１範囲の処理対象データに対し、処理の実行を開始する（ステップＳ２０６）。そして、第１処理結果Ｒｘが得られると、これをリクエストに対するレスポンスとしてクライアント装置１０に送信する（ステップＳ２０８）。
【００７８】
さらに、第１範囲に対する第１処理結果Ｒｘの送信が完了すると、サーバ３０から受信した第２処理結果Ｓｘをレスポンスとしてクライアント装置１０に送信する（ステップＳ２２４）。さらに、サーバ３０に第１範囲に対する第１処理結果Ｒ１〜Ｒｎが送信され（ステップＳ２３０）、サーバ３０の処理結果記憶部３０６に格納される（ステップＳ２３２）。
【００７９】
図１６は、第２の実施の形態にかかる中継機器２２の詳細な処理を示すフローチャートである。中継機器２２では、リクエストを返送すると、制御部２０３が第１範囲を特定し、データ処理部２０６は、第１範囲の処理対象データに対する処理を開始する（ステップＳ２４０）。そして、第１処理結果Ｒｘが得られると（ステップＳ２４２，Ｙｅｓ）、第１処理結果Ｒｘをレスポンスとしてクライアント装置１０に送信する（ステップＳ２４４）。
【００８０】
このように、本実施の形態においては、第１処理結果Ｒｘが既にクライアント装置１０に送信済みであるということがないため、レスポンステーブル２０８を参照する処理は不要である。
【００８１】
そして、第１範囲の処理対象データに対するすべての第１処理結果Ｒ１〜Ｒｎをクライアント装置１０に送信すると（ステップＳ２４６，Ｙｅｓ）、データ処理部２０６は、処理を終了する（ステップＳ２４８）。そして、これ以降は、中継機器２２は、通常の処理を行い（ステップＳ２５０）、クライアント装置１０への転送処理が完了すると（ステップＳ２５２，Ｙｅｓ）、第１処理結果Ｒ１〜Ｒｎをサーバ３０に送信し（ステップＳ２５４）、処理が完了する。
【００８２】
このように、第２の実施の形態においては、中継機器２２およびサーバ３０は、処理対象データの異なる範囲の処理を担当するので、両者の処理結果が重複することがなく、両者の調整に関する処理を不要とすることができる。
【００８３】
さらに、この場合には、中継機器２２において得られた第１処理結果を適当なタイミングで中継機器２２からサーバ３０に送信し、処理結果記憶部３０６に格納することができるので、サーバ３０は、すべての処理結果を管理することができる。
【００８４】
さらに、本実施の形態において、第１範囲の処理が完了したときに、サーバ３０からレスポンスを受信しない場合には、データ処理部２０６は、第２範囲の処理対象データについても処理を行う。この場合、レスポンス管理部２０７は、第１範囲の処理が完了したときには、レスポンステーブル２０８に「０」を書き込む。また、第２範囲の処理を開始した場合には、レスポンスを行ったバイト長を記録する。
【００８５】
これにより、制御部２０３は、レスポンステーブル２０８に値が書き込まれていない場合には、第１範囲の処理が終了していないことがわかる。したがって、処理が終了するまで待機する。レスポンステーブル２０８に正の値が書き込まれている場合には、書き込まれている値の分だけサーバ３０からのレスポンスを削除することができる。
【００８６】
なお、第２の実施の形態にかかる中継システムのこれ以外の構成および処理は、第１の実施の形態にかかる中継システムと同様である。
【００８７】
第２の実施の形態にかかる中継機器２２の変更例としては、第１範囲の処理対象データを削除するのにかえて、第１範囲または第２範囲を示す範囲情報をリクエストに追加して、リクエストを転送してもよい。図１７は、変更例にかかる処理を示す通信シーケンス図である。
【００８８】
変更例においては、図１７に示すように、中継機器２２の第１通信部２０１がリクエストを受信すると（ステップＳ２００）、制御部２０３は、処理対象データに第２範囲を示す範囲情報を追加する（ステップＳ２３０）。そして、制御部２０３の制御の下、第２通信部２０２は、範囲情報が追加されたリクエストをサーバ３０を宛て先として送信する（ステップＳ２３２）。図１８は、サーバ３０に送信されるリクエストを示す図である。このように、リクエストには、「Ｅｘｐｅｃｔヘッダ」において「２−１０」と第２範囲を示す情報が含まれている。これにより、サーバ３０は、自身が処理すべき処理対象データの範囲を特定することができる。
【００８９】
なお、範囲情報は、サーバ３０が処理対象データの範囲を特定するための情報であればよく、例えば第１範囲と第２範囲の境界を示す情報であってもよい。また、範囲情報は、データのヘッダ部以外の部分に記載されていてもよい。また、リクエストに含まれていればよく、例えばリクエストのメタデータ部分などデータ以外の部分に記載されていてもよい。すなわち、範囲情報は、例えばリクエストのメタデータに含めることができる。具体的には、例えばＥｘｐｅｃｔヘッダに含めることができる。また、リクエストデータのメタデータに含めることができる。具体的には、例えば本実施の形態において用いたｔｉｆｆファイルのメタデータに含めることができる。また、リクエストデータ自体に含めることができる。具体的には、ｔｉｆｆファイルのバイナリデータ内に含めることができる。このように、範囲情報は、サーバ３０が特定可能な領域に記載されていればよい。
【００９０】
サーバ３０はリクエストを受信すると（ステップＳ２３２）、まず制御部３０２が、リクエストの記述から第２範囲を特定する（ステップＳ２２３）。そして、データ処理部３０５は、第２範囲の処理対象データに対する処理を開始する（ステップＳ２２０）。サーバ３０は、第１範囲の処理対象データも取得している。したがって、データ処理部３０５は、第２範囲の処理対象データについての処理が完了すると（ステップＳ２３４，Ｙｅｓ）、続いて、第１範囲の処理対象データに対する処理を開始する（ステップＳ２３６）。そして、データ処理部３０５により得られた処理対象データすべてに対する第２処理結果Ｓを処理結果記憶部３０６に記憶する（ステップＳ２３８）。
【００９１】
このように、本例においては、サーバ３０も第１範囲の処理対象データを取得することができるので、中継機器２２から第１範囲の処理対象データに対する第１処理結果Ｓｘを取得する処理を不要とすることができる。さらに、このように、第１範囲の処理対象データについての処理を第２範囲の処理対象データに対する処理の後に行うこととすることで、クライアント装置１０へのレスポンスまでの待ち時間をより短縮することができる。
【００９２】
（第３の実施の形態）
次に、第３の実施の形態について説明する。第３の実施の形態にかかる中継機器２４は、第１範囲を動的に決定することができる。図１９は、第３の実施の形態にかかる中継機器２４の構成を示すブロック図である。中継機器２４は、第１通信部２０１と、第２通信部２０２と、制御部２０３と、リクエスト記憶部２０４と、プログラム記憶部２０５と、データ処理部２０６と、レスポンス管理部２０７と、削除範囲決定部２２４と、リクエスト編集部２４０と、レスポンステーブル２０８とを備えている。ここで、第１通信部２０１、第２通信部２０２、リクエスト記憶部２０４、プログラム記憶部２０５、データ処理部２０６、レスポンス管理部２０７、レスポンステーブル２０８については、第１の実施の形態と同様である。
【００９３】
削除範囲決定部２２４は、現在の回線状況や処理負荷に基づいて、リクエストの処理対象データから削除する範囲、すなわち第１範囲を決定する。具体的には、基準となる状況を１として定め、現在の状況と基準となる状況の差分を示す値を算出する。基準となる状況としては、例えば平常時や、中継機器２４およびサーバ３０の負荷がともにゼロの状態の時などがある。差分の算出においては、変数として転送速度、中継機器２４の現在の負荷、サーバ３０の現在の負荷を用いる。削除範囲決定部２２４は、現在の３つの変数を測定し、これらの値に基づいて差分を示す値を算出し、差分に基づいて、第１範囲を決定する。
【００９４】
例えば、中継機器２０からサーバ３０への転送速度を算出する転送速度特定部を中継機器２０に設ける。また、処理対象データの１０％を基準となる状況における第１範囲として定めておく。そして、リクエストをクライアント装置１０から受信した場合に、転送速度特定部により、中継機器２０からサーバ３０への転送速度を算出し、回線の不調により転送速度が２倍となっている場合には、削除範囲決定部２２４は、１０％に２を乗じて２０％を第１範囲として決定する。このように、環境に応じて中継機器２４の分担量を動的に決定することができる。
【００９５】
処理負荷を用いる場合には、中継機器２０のＣＰＵ稼働率等の処理負荷を算出する負荷算出部を中継機器２０に設け、リクエストをクライアント装置１０から受信した場合に、負荷算出部により上記処理負荷を算出する。そして、この処理負荷の値から、例えば、処理負荷が平常時の２倍になった場合には、削除範囲決定部２２４は、１０％に２を乗じて２０％を第１範囲とする。
【００９６】
また、サーバ３０側の処理負荷を第１範囲の決定に用いてもよい。例えば、サーバ３０のＣＰＵ稼働率等の処理能力をサーバ３０から受信するサーバ負荷受信部を中継機器２０に設けるそして、リクエストをクライアント装置１０から受信した場合に、サーバ負荷受信部によりサーバ３０の上記処理負荷を特定し、例えばサーバ３０の処理負荷が２倍になった場合には、削除範囲決定部２２４は、１０％に２を除して５％を第１範囲とするように構成することができる。
【００９７】
この他、削除範囲決定部２２４を、中継機器２０のＣＰＵクロック数等の処理能力、サーバ３０のＣＰＵクロック数等の処理能力により第１範囲を決定するように構成することもできる。
【００９８】
本実施の形態のリクエスト編集部２４０は、第１通信部２０１が受信したリクエストに含まれる処理対象データから、削除範囲決定部２２４で決定された第１範囲を削除して、第１範囲削除後のリクエストをリクエスト記憶部２０４に一時的に格納する。
【００９９】
図２０は、第３の実施の形態にかかる処理を示す通信シーケンス図である。クライアント装置１０がリクエストを送信すると（ステップＳ２００）、中継機器２２の第１通信部２０１がクライアント装置１０からリクエストを受信する。
【０１００】
そして、中継機器２２の削除範囲決定部２２４は、現在の回線状況や処理能力等を判断して、リクエストの処理対象データから削除する第１範囲を、上述の手法で決定する（ステップＳ２００１）。そして、リクエスト編集部２４０は、受信したリクエストに含まれる処理対象データから、削除範囲決定部２２４で決定された第１範囲を削除する（ステップＳ２０２）。以降の処理（ステップＳ２０４〜Ｓ２３２）は、図１５で説明した第２の実施の形態の処理と同様に行われる。
【０１０１】
このように本実施の形態では、処理対象データから削除する第１範囲を、現在の回線状況に基づいて動的に定めているので、第１範囲をネットワークの状況に動的に最適な範囲に定めることができ、クライアント装置１０は、サーバ３０のみからレスポンスを受け取る場合に比べて、リクエストに対するレスポンスを受け取るまでの待ち時間をより短縮することができる。
【０１０２】
第３の実施の形態では、削除範囲決定部２２４を、現在の回線状況に基づいて第１範囲を決定するように構成したが、これに限定されることはない。
【０１０３】
このような第１の変更例としては、削除範囲決定部２２４は、これまでの転送結果からの学習により第１範囲を決定してもよい。
【０１０４】
削除範囲決定部２２４は、前回の処理において処理対象データの１５％を第１範囲と決定したところ、中継機器２４のデータ処理部２０６による第１範囲の処理対象データに対する処理中に、サーバ３０から第２範囲の処理対象データに対する第２処理結果を受信したとする。この場合には、中継機器２４の分担量が多すぎたことがわかるので、第１範囲を１５％から例えば１０％など、より少ない量に変更する。すなわち、削除範囲決定部２２４は、前回の第２処理結果Ｓｘの受信タイミングに基づいて決定する。このように、一般的な教師あり学習のモデルを使って学習することにより第１範囲の最適化を図ることができる。
【０１０５】
本実施の形態のサーバは、ＣＰＵなどの制御装置と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０１０６】
また、本実施の形態の中継機器は、ＣＰＵなどの制御装置と、ＲＯＭやＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、液晶表示パネル等の表示装置、入力装置等を備えたハードウェア構成となっている。
【０１０７】
本実施の形態の中継機器およびサーバで実行されるプログラムは、いずれもインストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１０８】
また、本実施の形態の中継機器またはサーバで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の中継機器またはサーバで実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、本実施形態のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１０９】
本実施の形態の中継機器またはサーバで実行されるプログラムは、上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、各部が主記憶装置上に生成されるようになっている。
【符号の説明】
【０１１０】
１０  クライアント装置
２０  中継機器
３０  サーバ
２０１  第１通信部
２０２  第２通信部
２０３  制御部
２０４  リクエスト記憶部
２０５  プログラム記憶部
２０６  データ処理部
２０７  レスポンス管理部
２０８  レスポンステーブル
２２０  リクエスト編集部
２２４  削除範囲決定部
３０１  通信部
３０２  制御部
３０３  リクエスト記憶部
３０４  プログラム記憶部
３０５  データ処理部
３０６  処理結果記憶部
【先行技術文献】
【特許文献】
【０１１１】
【特許文献１】特開平１１−１４３７５９号公報
【図１】
0005482353.tif 000002
【図２】
0005482353.tif 000003
【図３】
0005482353.tif 000004
【図４】
0005482353.tif 000005
【図５】
0005482353.tif 000006
【図６】
0005482353.tif 000007
【図７】
0005482353.tif 000008
【図８】
0005482353.tif 000009
【図９】
0005482353.tif 000010
【図１０】
0005482353.tif 000011
【図１１−１】
0005482353.tif 000012
【図１１−２】
0005482353.tif 000013
【図１２】
0005482353.tif 000014
【図１３】
0005482353.tif 000015
【図１４】
0005482353.tif 000016
【図１５】
0005482353.tif 000017
【図１６】
0005482353.tif 000018
【図１７】
0005482353.tif 000019
【図１８】
0005482353.tif 000020
【図１９】
0005482353.tif 000021
【図２０】
0005482353.tif 000022