(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
動的コンテンツには、クライアントとの間で通信を確立するために、サーバで発行されたセッションIDに基づいて生成されるものがある。セッションIDは、クライアントを識別する情報であるため、セッションIDに基づいて生成される動的コンテンツは、他のクライアントからの要求によって同じものは生成されない。よって、セッションIDに基づいて生成される動的コンテンツは、過去に同じ要求がされていない場合は中継装置でキャッシュされることはなく、当該動的コンテンツを取得するためには、クライアントは、サーバとの間で通信を行わなければならない。
【0006】
本発明は、このような事情に鑑みてなされたものであり、要求元を識別する識別情報に基づいて生成されるコンテンツがクライアントから要求された際に、そのコンテンツをクライアントに提供するまでの時間を短縮することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る中継装置は、
クライアントとサーバとの間の通信を中継する中継装置であって、
第1のコンテンツを要求した要求元を識別する要求元識別情報を取得する取得手段と、
前記取得手段が取得した前記要求元識別情報と前記第1のコンテンツの次に取得すべき第2のコンテンツの取得先とを含むリクエストを前記サーバに送信するリクエスト送信手段と、
前記リクエストに含まれた前記第2のコンテンツの取得先及び前記要求元識別情報に基づいて前記サーバで生成された前記第2のコンテンツを前記サーバから取得するコンテンツ取得手段と、
前記リクエスト送信手段が送信した前記リクエストと前記第2のコンテンツの取得先及び前記要求元識別情報が一致するリクエストを前記クライアントから受信した場合に、前記コンテンツ取得手段が取得した前記第2のコンテンツを前記クライアントに送信するコンテンツ送信手段と、を備え
、
前記取得手段は、前記要求元識別情報に基づいて動的に変化する前記第2のコンテンツの取得先を取得し、
前記リクエスト送信手段は、前記要求元識別情報と前記取得手段が取得した前記第2のコンテンツの取得先とを含むリクエストを前記サーバに送信する、
ことを特徴とする。
【0008】
また、中継装置は、前記第2のコンテンツの取得先及び前記要求元識別情報を、前記コンテンツ取得手段が取得した前記第2のコンテンツと対応付けて記憶するコンテンツ記憶手段を備え、前記コンテンツ送信手段は、前記クライアントから受信したリクエストに含まれた前記第2のコンテンツの取得先及び前記要求元識別情報が前記コンテンツ記憶手段に記憶されている場合に、当該第2のコンテンツの取得先及び要求元識別情報に対応付けられた前記第2のコンテンツを前記コンテンツ記憶手段から読み出し、読み出した前記第2のコンテンツを前記クライアントに送信してもよい。
【0011】
本発明に係る中継方法は、
クライアントとサーバとの間の通信を中継する中継方法であって、
第1のコンテンツを要求した要求元を識別する要求元識別情報
に基づいて動的に変化する、前記第1のコンテンツの次に取得すべき第2のコンテンツの取得先を取得する取得ステップと、
前記要求元識別情報と前
記第2のコンテンツの取得先とを含むリクエストを前記サーバに送信するリクエスト送信ステップと、
前記リクエストに含まれた前記第2のコンテンツの取得先及び前記要求元識別情報に基づいて前記サーバで生成された前記第2のコンテンツを前記サーバから取得するコンテンツ取得ステップと、
前記リクエスト送信ステップで送信した前記リクエストと実質的に同一のリクエストを前記クライアントから受信した場合に、前記コンテンツ取得ステップで取得した前記第2のコンテンツを前記クライアントに送信するコンテンツ送信ステップと、を有する、
ことを特徴とする。
【0012】
本発明に係るプログラムは、
クライアントとサーバとの間の通信を中継するプログラムであって、
コンピュータを、
第1のコンテンツを要求した要求元を識別する要求元識別情報
に基づいて動的に変化する、前記第1のコンテンツの次に取得すべき第2のコンテンツの取得先を取得する取得手段、
前記要求元識別情報と前
記第2のコンテンツの取得先とを含むリクエストを前記サーバに送信するリクエスト送信手段、
前記リクエストに含まれた前記第2のコンテンツの取得先及び前記要求元識別情報に基づいて前記サーバで生成された前記第2のコンテンツを前記サーバから取得するコンテンツ取得手段、
前記リクエスト送信手段が送信した前記リクエストと実質的に同一のリクエストを前記クライアントから受信した場合に、前記コンテンツ取得手段が取得した前記第2のコンテンツを前記クライアントに送信するコンテンツ送信手段、として機能させる、
ことを特徴とする。
【発明の効果】
【0013】
本発明によれば、要求元を識別する識別情報に基づいて生成されるコンテンツがクライアントから要求された際に、そのコンテンツをクライアントに提供するまでの時間を短縮することができる。
【発明を実施するための形態】
【0015】
以下、図面を参照して、本発明の実施の形態に係る中継装置、中継方法及びプログラムを説明する。
【0016】
図1に示すように、本実施の形態に係る中継装置10は、クライアントC1,C2・・・と、サーバS1,S2・・・との間に配置される。中継装置10は、例えば負荷分散装置(ロードバランサ)やプロキシサーバ等から構成される。中継装置10は、ネットワークN1を介してクライアントCとHTTP通信(以下、通信という)を行い、ネットワークN2を介してサーバSと通信を行う。ネットワークN1,N2は、例えばインターネットやLAN(Local Area Network)等である。なお、以下の説明において、クライアントC1,C2・・・を区別しない場合は、それぞれをクライアントCと総称し、サーバS1,S2・・・を区別しない場合は、それぞれをサーバSと総称する。
【0017】
中継装置10は、クライアントCとサーバSとの間で行われる通信を中継する。具体的には、中継装置10は、クライアントCの要求を表すHTTPリクエスト(以下、リクエストという)をクライアントCから受信し、受信したリクエストをサーバSに送信する(中継する)。また、中継装置10は、サーバSの応答を表すHTTPレスポンス(以下、レスポンスという)をサーバSから受信し、受信したリクエストをクライアントCに送信する(中継する)。
【0018】
また、中継装置10は、サーバSにおいてクライアントCの認証が正常に行われた場合に発行されたセッションIDをサーバSから取得する。セッションIDは、クライアントCとのセッションを特定するための識別情報であり、セッションIDによりクライアントCが識別される。
【0019】
また、中継装置10は、クライアントCから動的コンテンツが要求された場合に、要求された動的コンテンツをサーバSから取得するほか、その次に取得すべき動的コンテンツをサーバSからプリフェッチ(先取り)する機能を備える。プリフェッチされる動的コンテンツは、利用可能性が高いものが対象となる。具体的には、サーバSがポータルサイトを運用するものである場合、そのサイトのトップページ(index.html)からは、メール、オークション、スケジュール、天気予報等の複数のページが利用できるが、そのうち利用頻度が高いコンテンツ(ページ)が対象となり、その取得先を表すURL(Uniform Resource Locator)が設定されている。例えば、各サーバSは、自己の学習機能によって、コンテンツの取得先(URL)毎に、その次に要求されるコンテンツの取得先を学習し、その中で要求される回数が多い一定の順位までのコンテンツの取得先をプリフェッチ対象として設定する。中継装置10の管理者は、各サーバSの学習機能によって設定された、コンテンツの取得先(URL)と、その次に要求されるコンテンツの取得先とを対にした情報(取得先情報)を各サーバSからダウンロード等して取得し、これを中継装置10に設定しておく。
【0020】
動的コンテンツは、その取得先を表すURL及びセッションIDに基づいて生成される。動的コンテンツは、クライアント固有のものであり、例えば、クライアントC1,C2から同じ取得先が指定されたリクエストがサーバSに送信されても、セッションIDが異なるので、クライアントC1,C2に提供される動的コンテンツはそれぞれ異なる。
【0021】
クライアントCは、PC(パーソナルコンピュータ)から構成される。クライアントCは、ユーザの操作に従ってリクエストを生成し、生成したリクエストを中継装置10に送信する。また、クライアントCは、中継装置10からレスポンスを受信し、レスポンスに含まれるHTMLファイルや画像ファイル等の動的コンテンツを出力する。
【0022】
サーバSは、ウェブサーバから構成される。サーバSは、中継装置10からリクエストを受信する。サーバSは、受信したリクエストに基づいてレスポンスを生成し、生成したレスポンスを中継装置10に送信する。また、サーバSは、中継装置10から受信したリクエストに含まれた認証情報(ユーザID、パスワード等)に基づいて認証処理を行い、ユーザの認証が正常に行われると上述したセッションIDを発行する。
【0023】
つづいて、
図2を参照して中継装置10の構成を説明する。中継装置10は、制御部11と、記憶部12と、通信部13とを備える。
【0024】
通信部13は、例えばネットワークアダプタ等の通信インタフェース装置から構成される。通信部13は、制御部11の制御に従って、ネットワークN1を介して接続されたクライアントCと通信を行う。また、通信部13は、制御部11の制御に従って、ネットワークN2を介して接続されたサーバSと通信を行う。なお、通信部13とネットワークN1,N2との接続は、有線または無線のどちらでもよい。
【0025】
記憶部12は、例えば、HDD(Hard disk drive)、ROM(Read Only Memory)、フラッシュメモリ等の記憶装置から構成される。記憶部12は、制御部11が各種処理を行うために使用する各種プログラムおよびデータ、制御部11が各種処理を行うことにより生成又は取得した各種データを記憶する。
【0026】
また、記憶部12は、特徴的には、中継制御プログラム12a、取得先情報12bおよびコンテンツテーブル12cを記憶する。なお、本発明に係るコンテンツ記憶手段及び取得先情報記憶手段は、記憶部12の機能によって実現される。
【0027】
中継制御プログラム12aは、クライアントCとサーバSとの間で行われる通信を制御するための制御プログラムであり、制御部11によって実行される。
【0028】
取得先情報12bは、
図3に示すように、動的コンテンツの取得先(URL)と、その次に取得すべき動的コンテンツ(プリフェッチ対象)の取得先との対応関係を表す。プリフェッチ対象である動的コンテンツの取得先は、上述したように利用可能性が高いものである。
【0029】
コンテンツテーブル12cは、セッションID、プリフェッチ対象である動的コンテンツの取得先(URL)、及びプリフェッチされた動的コンテンツを格納するものである。中継装置10は、セッションIDと、プリフェッチ対象である動的コンテンツの取得先とを含むリクエストを生成し、これをサーバSに送信する。このとき、中継装置10は、
図4(a)に示すように、リクエストに含まれたセッションID及び動的コンテンツの取得先をコンテンツテーブル12cに記憶する。コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先は、サーバSから受信したレスポンスがプリフェッチ対象のリクエストに対するレスポンスか否かを判別するために用いられる。具体的には、中継装置10は、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するものがサーバSから受信したレスポンスに含まれている場合、当該レスポンスがプリフェッチ対象のリクエストに対するレスポンスであると判別する。一方、中継装置10は、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するものがサーバSから受信したレスポンスに含まれていない場合、当該レスポンスがプリフェッチ対象のリクエストに対するレスポンスではないと判別する。中継装置10は、サーバSから受信したレスポンスがプリフェッチ対象のリクエストに対するレスポンスであると判別した場合、
図4(b)に示すように、コンテンツテーブル12cにおいてレスポンスと一致するセッションID及び動的コンテンツの取得先を、そのレスポンスに含まれた動的コンテンツと対応付けてコンテンツテーブル12cに記憶する。さらに、中継装置10は、クライアントCから受信したリクエストにおいて、コンテンツテーブル12cに記憶された動的コンテンツの取得先及びセッションIDと一致するものが含まれていた場合、その取得先及びセッションIDに対応付けられた動的コンテンツをコンテンツテーブル12cから読み出し、読み出した動的コンテンツをクライアントCに送信する。
【0030】
制御部11は、例えば、CPU(Central Processing Unit)、CPUのメインメモリとして機能するRAM(Random Access Memory)等から構成される。なお、制御部11は、一部がASIC(Application Specific Integrated Circuit)等の専用回路から構成されてもよい。制御部11は、中継装置10全体を制御する。
【0031】
また、制御部11は、記憶部12に記憶された中継制御プログラム12aを実行することにより、取得部11a、リクエスト送信部11b、コンテンツ取得部11c、コンテンツ送信部11dとして機能し、それぞれの機能によって後述の中継制御処理が行われる。本発明に係る取得手段は取得部11aの機能によって実現され、本発明に係るリクエスト送信手段はリクエスト送信部11bの機能によって実現され、本発明に係るコンテンツ取得手段はコンテンツ取得部11cの機能によって実現され、本発明に係るコンテンツ送信手段はコンテンツ送信部11dの機能によって実現される。
【0032】
以上のように構成された中継装置10は、セッションIDと動的コンテンツの取得先(URL)とに基づいて生成される動的コンテンツをプリフェッチする処理を行う。また、中継装置10は、クライアントCから要求された動的コンテンツがプリフェッチされている場合は、サーバSとの通信を行わず、プリフェッチされた動的コンテンツをクライアントCに送信する処理を行う。
【0033】
次に、
図5を参照して中継装置10が、クライアントC及びサーバSとの間で行う通信の流れを説明する。
【0034】
クライアントCは、中継装置10を介して、一のサーバS(例えばサーバS1)と接続されており、サーバSから提供されたログイン画面(login.html)を表示している。クライアントCのユーザは、ログイン画面が表示されている状態で、自身の認証情報(ユーザID、パスワード)を入力する操作を行うと、クライアントCは、認証情報及び動的コンテンツの取得先「URL1」を含むリクエストを中継装置10に送信する(ステップCS1)。
【0035】
中継装置10は、クライアントCから送信されたリクエストを受信し(ステップS101)、そのリクエストにセッションIDが含まれていない場合には、受信したリクエストをサーバSに中継する(ステップS102)。
【0036】
サーバSは、中継装置10から送信されたリクエストを受信すると(ステップSS1)、リクエストに含まれた認証情報と、自身に記憶された認証情報とを参照してユーザ認証を行う。サーバSは、ユーザ認証が正常にできた場合にセッションID「AAA」を発行する。また、サーバSは、サーブレットやJSP(Java(登録商標) Server Pages)等の動的コンテンツを生成するプログラムを、動的コンテンツの取得先「URL1」及びセッションID「AAA」を表す各パラメータで実行し、動的コンテンツ「X1」を生成する。動的コンテンツ「X1」は、例えばウェブサーバのトップページ画面(index.html)を表すHTMLファイル(index.html)であり、具体的には「こんにちは、○○さん」のように、クライアントCを使用するユーザへのメッセージが含まれている。また、サーバSは、発行したセッションID「AAA」をSet−Cookieと呼ばれるヘッダに設定し、生成した動的コンテンツ「X1」を含むレスポンスを中継装置10に送信する(ステップSS2)。
【0037】
中継装置10は、サーバSから送信されたレスポンスを受信すると(ステップS103)、受信したレスポンスをクライアントCに中継する(ステップS104)。これにより、クライアントCは、中継装置10から送信されたレスポンスを受信し(ステップCS2)、レスポンスに含まれたセッションID「AAA」をブラウザのクッキーに記憶する。セッションID「AAA」をクッキーに記憶することにより、クライアントCは、以降の処理ではステップCS1で送信したリクエストを送信せずに(認証を行わずに)サーバSとの通信を行うことができる。
【0038】
また、中継装置10は、記憶部12に記憶された取得先情報12bから、動的コンテンツ「X1」の次に取得すべき動的コンテンツ(プリフェッチ対象)の取得先「URL2」、「URL3」、及び「URL4」を抽出し、
図4(a)に示すように、レスポンスに含まれたセッションID「AAA」を、取得先「URL2」、「URL3」及び「URL4」のそれぞれと対応付けてコンテンツテーブル12cに記憶する。また、中継装置10は、取得先「URL2」及びセッションID「AAA」を含むリクエスト、取得先「URL3」及びセッションID「AAA」を含むリクエスト、取得先「URL4」及びセッションID「AAA」を含むリクエストを生成し、それぞれをサーバSに送信する(ステップS105)。
【0039】
サーバSは、中継装置10から送信された各リクエストを受信すると(ステップSS3)、各リクエストに基づいて動的コンテンツ「X2」、「X3」及び「X4」を生成する。具体的には、サーバSは、動的コンテンツを生成するプログラムを、取得先「URL2」及びセッションID「AAA」を表す各パラメータで実行することにより動的コンテンツ「X2」を生成する。また、サーバSは、動的コンテンツを生成するプログラムを、取得先「URL3」及びセッションID「AAA」を表す各パラメータで実行することにより、動的コンテンツ「X3」を生成する。さらに、サーバSは、動的コンテンツを生成するプログラムを、取得先「URL4」及びセッションID「AAA」を表す各パラメータで実行することにより、動的コンテンツ「X4」を生成する。動的コンテンツ「X2」、「X3」及び「X4」は、例えばトップページの次に取得可能なメール、オークション、スケジュール等の画面を表すHTMLファイルである。サーバSは、各リクエストに含まれた取得先及びセッションIDと、生成した動的コンテンツとを含むレスポンスを生成し、これを中継装置10に送信する(ステップSS4)。具体的には、サーバSは、取得先「URL2」とセッションID「AAA」と動的コンテンツ「X2」とを含むレスポンス、取得先「URL3」とセッションID「AAA」と動的コンテンツ「X3」とを含むレスポンス、及び、取得先「URL4」とセッションID「AAA」と動的コンテンツ「X4」とを含むレスポンスを生成し、それぞれを中継装置10に送信する。
【0040】
中継装置10は、サーバSから各レスポンスを受信すると(ステップS106)、コンテンツテーブル12cを参照し、受信したレスポンスがプリフェッチ対象のリクエストに対するレスポンスか否かを判別する。プリフェッチ対象のリクエストに対するレスポンスか否かの判別は、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するものがレスポンスに含まれているか否かによって行われる。例えば、上述した各レスポンスには、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するもの(取得先「URL2」及びセッションID「AAA」、取得先「URL3」及びセッションID「AAA」、取得先「URL4」及びセッションID「AAA」)が含まれている。この場合、中継装置10は、受信したレスポンスがプリフェッチ対象のリクエストに対するレスポンスであると判別し、
図4(b)に示すように、コンテンツテーブル12cにおいてレスポンスと一致するセッションID及び動的コンテンツの取得先を、そのレスポンスに含まれた動的コンテンツ(「X2」、「X3」、「X4」)と対応付けてコンテンツテーブル12cに記憶する(ステップS9)。これにより、動的コンテンツ「X1」の次に取得すべき動的コンテンツ「X2」、「X3」及び「X4」がプリフェッチされる。
【0041】
その後、クライアントCに動的コンテンツ「X1」(トップページ画面)が表示されている状態で、クライアントCを使用するユーザがメールのページを表示する操作を行った場合、クライアントCは、その取得先「URL2」とブラウザのクッキーに記憶されたセッションID「AAA」とを含むリクエストを生成し、これを中継装置10に送信する(ステップCS3)。
【0042】
中継装置10は、クライアントCからリクエストを受信すると(ステップS107)、コンテンツテーブル12cを参照し、当該リクエストがプリフェッチ対象のリクエストであるか否かを判別する。プリフェッチ対象のリクエストであるか否かの判別は、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するものがリクエストに含まれているか否かによって行われる。例えば、上述したリクエストには、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するもの(取得先「URL2」及びセッションID「AAA」)が含まれている。この場合、中継装置10は、当該リクエストがプリフェッチ対象のリクエストであると判別し、その取得先「URL2」及びセッションID「AAA」に対応付けられた動的コンテンツ「X2」をコンテンツテーブル12cから読み出す。中継装置10は、リクエストに含まれた取得先「URL2」及びセッションID「AAA」と、読み出した動的コンテンツ「X2」とを含むレスポンスを生成し、これをクライアントCに送信する(ステップS108)。つまり、この場合、中継装置10は、サーバSにリクエストを中継しないで、プリフェッチされた動的コンテンツ「X2」をクライアントCに提供する。クライアントCは、中継装置10から送信されたレスポンスを受信し(ステップCS4)、ユーザによって要求された動的コンテンツ「X2」(例えばメールのページ画面)を取得する。
【0043】
また、中継装置10は、プリフェッチされた動的コンテンツ「X2」がクライアントCに送信された場合、動的コンテンツ「X2」の次に取得すべき動的コンテンツ(プリフェッチ対象)の取得先「URL5」及び「URL6」を抽出し、セッションID「AAA」を、取得先「URL5」及び「URL6」のそれぞれと対応付けてコンテンツテーブル12cに記憶する。また、中継装置10は、上記ステップS105と同様に、取得先「URL5」及びセッションID「AAA」を含むリクエスト、取得先「URL6」及びセッションID「AAA」を含むリクエストを生成し、それぞれをサーバSに送信することにより、さらに次の動的コンテンツをプリフェッチするための処理を行う(ステップS109)。
【0044】
サーバSは、中継装置10から送信された各リクエストを受信すると(ステップSS5)、上記ステップSS4と同様に、各リクエストに基づいて動的コンテンツ「X5」及び「X6」を生成し、取得先「URL5」とセッションID「AAA」と動的コンテンツ「X5」とを含むレスポンス、及び、取得先「URL6」とセッションID「AAA」と動的コンテンツ「X6」とを含むレスポンスを生成し、それぞれを中継装置10に送信する(ステップSS6)。
【0045】
中継装置10は、サーバSから各レスポンスを受信し(ステップS110)、上記ステップS106と同様に、当該レスポンスはプリフェッチ対象のリクエストに対するレスポンスであると判別し、プリフェッチ対象のリクエストに対するレスポンスであると判別した場合、コンテンツテーブル12cにおいてレスポンスと一致するセッションID及び動的コンテンツの取得先を、そのレスポンスに含まれた動的コンテンツ(「X5」、「X6」)と対応付けてコンテンツテーブル12cに記憶する。このように、プリフェッチされた動的コンテンツ「X2」がクライアントCに送信された場合には、さらに、その次に取得可能な動的コンテンツ「X5」及び「X6」がプリフェッチされる。
【0046】
一方、クライアントCから中継装置10に送信されたリクエストにおいて、コンテンツテーブル12cに記憶されていない取得先「URL11」及びセッションID「AAA」が含まれていた場合(ステップCS5,S111)、中継装置10は、当該リクエストがプリフェッチ対象のリクエストではないと判別する。この場合、中継装置10は、クライアントCから受信した、取得先「URL11」及びセッションID「AAA」を含むリクエストをサーバSに中継する(ステップS112)。サーバSは、中継装置10から送信されたリクエストを受信すると(ステップSS7)、そのリクエストに基づいて動的コンテンツ「X11」を生成する。サーバSは、リクエストに含まれた取得先「URL11」及びセッションID「AAA」と、生成した動的コンテンツ「X11」とを含むレスポンスを生成し、これを中継装置10に送信する(ステップSS8)。中継装置10は、サーバSから受信したレスポンスにおいて、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するものが含まれていない場合(ステップS113)、当該レスポンスはプリフェッチ対象のリクエストに対するレスポンスではないと判別し、サーバSから受信したレスポンスをクライアントCに中継する(ステップS114)。つまり、この場合は、サーバSから受信したレスポンスを、そのままクライアントCに中継し、レスポンスに含まれた動的コンテンツ「X11」はコンテンツテーブル12cに記憶されない。クライアントCは、中継装置10から送信されたレスポンスを受信し(ステップCS6)、ユーザによって要求された動的コンテンツ「X11」を取得する。
【0047】
このようにして、中継装置10は、セッションIDと動的コンテンツの取得先(URL)とに基づいて生成される動的コンテンツをプリフェッチし、プリフェッチした動的コンテンツがクライアントCから要求された場合には、その動的コンテンツをクライアントCに送信する。
【0048】
次に、
図6を参照して、上記動作を行う中継装置10が実行する中継制御処理を説明する。中継装置10に電源が供給されると、制御部11は、記憶部12に記憶された中継制御プログラム12aを読み出して実行する。これにより、制御部11は、取得部11a、リクエスト送信部11b、コンテンツ取得部11c、コンテンツ送信部11dとして機能する。
【0049】
取得部11aは、クライアントCからリクエストを受信したか否かを判別し(ステップS1)、クライアントCからリクエストを受信していないと判別した場合には(ステップS1;NO)、サーバSからレスポンスを受信したか否かを判別する(ステップS2)。サーバSからレスポンスを受信していないと判別した場合には(ステップS2;NO)、ステップS1に戻る。つまり、取得部11aは、リクエスト及びレスポンスの何れも受信していない場合は待機状態を維持する。
【0050】
取得部11aは、クライアントCからリクエストを受信したと判別した場合(ステップS1;YES)、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するものがリクエストに含まれているか否かによって、当該リクエストがプリフェッチ対象のリクエストであるか否かを判別する(ステップS3)。例えば
図5に示したステップS101やステップS111のように、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するものがリクエストに含まれていない場合、取得部11aは、プリフェッチ対象のリクエストではないと判別する(ステップS3;NO)。この場合、リクエスト送信部11bは、受信したリクエストをサーバSに送信し(ステップS7)、その後はサーバSからのレスポンスを待つ。
【0051】
一方、
図5に示したステップS107のように、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するもの(取得先「URL2」及びセッションID「AAA」)がリクエストに含まれている場合、コンテンツ送信部11dは、その取得先及びセッションIDに対応付けられた動的コンテンツ(動的コンテンツ「X2」)をコンテンツテーブル12cから読み出す。コンテンツ送信部11dは、リクエストに含まれた取得先「URL2」及びセッションID「AAA」と、読み出した動的コンテンツ「X2」とを含むレスポンスを生成し、これをクライアントCに送信する(ステップS4)。
【0052】
ステップS5でコンテンツ送信部11dがレスポンスを送信した後、リクエスト送信部11bは、取得先情報12bを参照し、次の取得先があるか否かを判別する(ステップS5)。例えば取得先情報12bにおいて、動的コンテンツの取得先「URL2」の次に取得すべき動的コンテンツ(プリフェッチ対象)の取得先は「URL5」及び「URL6」がある。よって、この場合、リクエスト送信部11bは、次の取得先があると判別し(ステップS5;YES)、プリフェッチ対象のリクエストをサーバSに送信する(ステップS6)。リクエスト送信部11bは、その後はサーバSからのレスポンスを待機する。一方、リクエスト送信部11bは、次の取得先がないと判別した場合には(ステップS5;NO)、ステップS1に戻り、クライアントCからのリクエストを待つ。
【0053】
また、ステップS2において取得部11aがサーバSからレスポンスを受信したと判別した場合に(ステップS2;YES)、コンテンツ取得部11cは、当該レスポンスがプリフェッチ対象のリクエストに対するレスポンスか否かを判別する(ステップS8)。例えば、
図5に示したステップS106またはS110のように、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するものがレスポンスに含まれている場合、コンテンツ取得部11cは、当該レスポンスがプリフェッチ対象のリクエストに対するレスポンスであると判別する(ステップS8;YES)。この場合、コンテンツ取得部11cは、コンテンツテーブル12cにおいてレスポンスと一致するセッションID及び動的コンテンツの取得先を、そのレスポンスに含まれた動的コンテンツと対応付けてコンテンツテーブル12cに記憶する(ステップS9)。
【0054】
一方、取得部11aは、
図5に示したステップS103またはS113のように、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するものがレスポンスに含まれていない場合、当該レスポンスがプリフェッチ対象のリクエストに対するレスポンスではないと判別する(ステップS8;NO)。この場合、コンテンツ送信部11dは、受信したレスポンスをクライアントCに送信する(ステップS10)。
【0055】
また、リクエスト送信部11bは、サーバSから受信したレスポンスによって動的コンテンツをプリフェッチできるか否かを判別する(ステップS12)。例えば
図5のステップS103に示したように、サーバSから受信したレスポンスにセッションID「AAA」が含まれ、レスポンスに含まれた動的コンテンツの取得先「URL1」に対応付けられた、次に取得すべき動的コンテンツの取得先(「URL2」、「URL3」及び「URL4」)がある場合、リクエスト送信部11bは、動的コンテンツをプリフェッチできると判別する(ステップS11;YES)。この場合、リクエスト送信部11bは、
図5のステップS105に示したように、プリフェッチ対象の動的コンテンツをサーバSに要求する(ステップS12)。リクエスト送信部11bは、その後はサーバSからのレスポンスを待機する。一方、サーバSから受信したレスポンスにセッションIDが含まれていない場合や、取得先情報12bにおいて、レスポンスに含まれた動的コンテンツの取得先に対応付けられた、次に取得すべき動的コンテンツの取得先がない場合、リクエスト送信部11bは、動的コンテンツをプリフェッチできないと判別し(ステップS11;NO)、ステップS1に戻り、クライアントCからのリクエストを待つ。
以上により中継装置10が実行する一連の中継制御処理は終了する。
【0056】
以上説明したように、本実施の形態に係る中継装置10は、サーバSにおいて発行されたセッションIDと、クライアントCから要求された動的コンテンツの次に取得すべき動的コンテンツの取得先とを含むリクエストをサーバSに送信し、そのリクエストに従ってサーバSで生成された動的コンテンツを、クライアントCが要求する前にプリフェッチして記憶する。また、中継装置10は、記憶された動的コンテンツの要求を受け付けた場合に、その要求をサーバSへ中継しないで、記憶された動的コンテンツをクライアントに送信する。これにより、セッションIDに基づいて生成される動的コンテンツが要求された場合に、その動的コンテンツをクライアントに提供するまでの時間を短縮することができる。
【0057】
なお、上記実施の形態では、クライアントCから受信したリクエストがプリフェッチ対象のリクエストであるか否かを、コンテンツテーブル12cに記憶されたセッションID及び動的コンテンツの取得先と一致するものがリクエストに含まれているか否かによって判別する例を説明したが、クライアントCから受信したリクエストとサーバSに送信したプリフェッチ対象のリクエストとが実質的に同一か否かによって、クライアントCから受信したリクエストがプリフェッチ対象のリクエストであるか否かを判別してもよい。なお、ここでいう実質的に同一とは、クライアントCから受信したリクエストに含まれたセッションID及び動的コンテンツの取得先と、サーバSに送信したプリフェッチ対象のリクエストに含まれたセッションID及び動的コンテンツの取得先とが一致すればよく、その他の情報は異なってもよいことを意味する。
【0058】
また、リクエスト送信部11bは、コンテンツ送信部11dによって、クライアントCからプリフェッチされた動的コンテンツが要求されたときに、その次に取得可能な動的コンテンツの取得先を含むリクエストをサーバSに送信したが、クライアントCからの要求を待たなくてもよい。例えば、リクエスト送信部11bは、サーバSからプリフェッチ対象の動的コンテンツを含むレスポンスを受信した場合に、その次の動的コンテンツを要求するリクエストを送信し、取得先情報12bにより表される全ての取得先に対応する動的コンテンツを順次取得してもよい。
【0059】
また、リクエスト送信部11bは、プリフェッチされた動的コンテンツが、例えば、メール、天気予報等のように、逐次更新されるものである場合、再度、同じリクエストをサーバSに送信することにより、新たな動的コンテンツを取得してもよい。
【0060】
なお、コンテンツテーブル12cの記憶容量が一定値以下となった場合には、一定時間を超えて要求がない動的コンテンツを含むエントリや、記憶日時が古いエントリを消去することにより、プリフェッチ対象である新たな動的コンテンツをコンテンツテーブル12cに記憶してもよい。
【0061】
また、上記実施の形態において、中継装置10は、各サーバSから取得先情報12bを事前に取得し、これを記憶部12に備えた例を説明したが、自己の学習機能によってログを解析し、コンテンツの取得先(URL)毎に、その次に要求されるコンテンツの取得先を学習し、その中で要求される回数が多い一定の順位までのコンテンツの取得先をプリフェッチ対象として設定した取得先情報12bを生成し、これを記憶してもよい。また、この場合、取得先情報12bは、自動的に更新されてもよい。
【0062】
また、プリフェッチ対象の取得先は、サーバSにおいて生成されるレスポンスに含ませてもよい。この場合、取得先情報12bはサーバSに記憶され、中継装置10には記憶されない。具体的には、サーバSは、中継装置10から送信されたリクエストを受信すると、リクエストに含まれた動的コンテンツの取得先(例えば「URL2」)とセッションID(例えば「AAA」)とに基づいて動的コンテンツ(例えば「X2」)を生成するほか、取得先情報12bを参照し、リクエストに含まれた取得先に対応付けられたプリフェッチ対象の取得先(「URL5」、「URL6」)を読み出す。サーバSは、動的コンテンツ「X2」、セッションID「AAA」、及びプリフェッチ対象の取得先「URL5」「URL6」を含むレスポンスを生成し、これを中継装置10に送信する。これにより、中継装置10は、サーバSから受信したレスポンスからプリフェッチ対象の取得先「URL5」、「URL6」を抽出し、取得先「URL5」及びセッションID「AAA」を含むリクエストと、取得先「URL6」及びセッションID「AAA」を含むリクエストとを生成し、それぞれをサーバSに送信することにより、サーバSから取得したプリフェッチ対象の取得先によって、動的コンテンツをプリフェッチするための処理を行うことができる。
【0063】
また、上記実施の形態では、動的コンテンツは、サーバSで発行されたセッションIDに基づいて生成されるものを例に説明したが、要求元を識別できる情報に基づいて生成されるものであればよい。セッションID以外の要求元を識別できる情報には、例えば、SSL(Secure Sockets Layer)セッションID、クライアントCのIP(Internet Protocol)アドレス、MAC(Media Access Control)アドレス、ポート番号、クライアントCを利用するユーザの認証情報(ユーザID、パスワード)等がある。
【0064】
なお、本発明に係る中継装置は、一般的なPC(パーソナルコンピュータ)等により実現できる。この場合、上記実施の形態で説明した動作を実行するためのプログラムをPC等にインストールし、このプログラムをPC等が実行することにより本発明に係る中継装置として機能させることができる。このようなプログラムは、例えば、持ち運び可能な記録媒体等に記録されて配布される。持ち運び可能な記録媒体には、例えば、CD−ROM、DVD−ROM、BD−ROM、MO等がある。
【0065】
また、PC等にプログラムを提供する方法は任意である。例えば、プログラムを通信回線の掲示板(BBS)にアップロードし、通信回線を介してPC等に配信してもよい。また、プログラムは、プログラムを表す信号により搬送波を変調した変調波により伝送され、この変調波を受信した装置が変調波を復調してプログラムを復元するようにしてもよい。そして、PC等は、このプログラムを起動して、OSの制御のもと、他のアプリケーションと同様に実行する。これにより、PC等は、本発明に係る中継装置として機能する。
【0066】
その他、本発明は、上記実施の形態の説明および図面によって限定されるものではなく、上記実施の形態および図面に適宜変更等を加えることは可能である。