以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
本発明の第1の実施の形態としてのポータルサーバ10のハードウェア構成を図1に示す。
図1において、ポータルサーバ10は、CPU(Central Processing Unit)1001と、RAM(Random Access Memory)1002と、ROM(Read Only Memory)1003と、ハードディスク等の記憶装置1004と、ネットワークインタフェース1005とを備えたコンピュータ装置によって構成されている。
ROM1003および記憶装置1004には、コンピュータ装置を本実施の形態のポータルサーバ10として機能させるためのコンピュータ・プログラムおよび各種データが記憶されている。
CPU1001は、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行する。
ネットワークインタフェース1005は、ネットワークを介して他の装置との通信を行うモジュールである。
次に、ポータルサーバ10の機能ブロック構成を図2に示す。図2において、ポータルサーバ10は、ポートレット表示内容生成部11と、ポートレット差分情報生成部12と、ポートレット差分情報記憶部13と、レイアウト情報記憶部14と、リクエスト情報受信部15と、レスポンス情報生成部16と、レスポンス情報送信部17とを備える。ここで、ポートレット表示内容生成部11と、リクエスト情報受信部15と、レスポンス情報送信部17とは、ネットワークインタフェース1005と、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001とによって構成される。また、ポートレット差分情報生成部12と、レスポンス情報生成部16とは、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001によって構成される。また、ポートレット差分情報記憶部13と、レイアウト情報記憶部14とは、記憶装置1004によって構成される。なお、ポータルサーバ10の各機能ブロックを構成するハードウェア構成は、上述の構成に限定されない。
また、図2において、ポータルサーバ10は、インターネット、LAN(Local Area Network)、公衆回線網、無線通信網またはこれらの組合せ等によって構成されるネットワークを介して、クライアント装置およびコンテンツ提供元装置に接続されている。なお、図2には、クライアント装置およびコンテンツ提供元装置をそれぞれ1つずつ示しているが、本発明のポータルサーバが接続される各装置の数を限定するものではない。
ポートレット表示内容生成部11は、ポータルページに配置されるポートレットの表示内容を生成する。ここで、ポータルページとは、ポートレットを配置可能なウェブページである。また、ポートレットとは、ウェブページに着脱可能なユーザインタフェースのコンポーネントである。例えば、このようなポートレットは、コンテンツ提供元装置からコンテンツを取得することにより表示内容を生成するコンピュータ・プログラムとして、ポータルサーバ10にあらかじめ登録されたものであってもよい。その場合、ポートレット表示内容生成部11は、登録されたポートレットとしてのコンピュータ・プログラムを実行することにより、実行時にコンテンツ提供元装置からコンテンツを取得する。これにより、ポートレット表示内容生成部11は、ポートレット実行時にコンテンツ提供元サーバから提供される最新情報を用いて、表示内容を生成することになる。ここで、ポートレットの表示内容とは、クライアント装置におけるポータルページを表示するアプリケーション(ウェブブラウザ等)によって解釈されることにより、クライアント装置に表示されることが可能な情報である。例えば、ポートレットの表示内容は、HTML(HyperText Markup Language)やXML(Extensible Markup Language)等のマークアップ言語で記述されたウェブページの一部分であってもよい。以下、そのようなウェブページの一部分の一例をHTML情報とも記載する。例えば、ポートレット表示内容生成部11は、コンピュータ・プログラムとして登録されたポートレットを格納するとともに、そのようなポートレットを実行することによりポートレットの表示内容を表すHTML情報を出力するポートレットコンテナによって実現されていてもよい。
ポートレット差分情報生成部12は、ポートレット表示内容生成部11によってある時点で生成されたポートレットの表示内容をポートレットキャッシュデータとして、後述のポートレット差分情報記憶部13に記憶させる。
また、ポートレット差分情報生成部12は、ポートレット表示内容生成部11によって他の時点で生成された表示内容について、ポートレットキャッシュデータに対する差分を表すポートレット差分データを生成する。例えば、ポートレット差分データは、ポートレットキャッシュデータに対する変更箇所と変更内容とを含むデータであってもよい。具体的には、ポートレットキャッシュデータがHTML情報である場合、ポートレット差分データは、XPath(XML Path Language)により記述された変更箇所の要素と、その要素の変更前後の内容とを含むデータであってもよい。そして、ポートレット差分情報生成部12は、生成したポートレット差分データを、後述のポートレット差分情報記憶部13に記憶させる。
ポートレット差分情報記憶部13は、ポートレットキャッシュデータおよびポートレット差分データを記憶する。また、ポートレット差分情報記憶部13は、ポートレットキャッシュデータおよびポートレット差分データに、それぞれその取得日時を対応付けて記憶する。なお、ポートレットキャッシュデータの取得日時とは、そのポートレットキャッシュデータを生成する際に、コンテンツ提供元装置からコンテンツを取得した日時であってもよい。また、ポートレット差分データの取得日時とは、ポートレットキャッシュデータと比較するためのポートレットの表示内容を生成する際に、コンテンツ提供元装置からコンテンツを取得した日時であってもよい。
レイアウト情報記憶部14は、ポータルページに配置されたポートレットを表すレイアウト情報を記憶する。例えば、レイアウト情報は、各ポートレットの表示内容の記述が組み込まれる箇所に空のHTML要素が含まれたHTML文書であってもよい。例えば、ポータルサーバ10が、該当するポータルページに配置されるポートレットをカスタマイズ可能に提供する場合、レイアウト情報記憶部14は、ユーザを識別するユーザIDに対応付けて、レイアウト情報を格納してもよい。
リクエスト情報受信部15は、クライアント装置から、ポータルページを要求するリクエスト情報を受信する。例えば、このリクエスト情報には、クライアント装置を利用しているユーザのユーザIDが含まれていてもよい。
レスポンス情報生成部16は、リクエスト情報受信部15によってリクエスト情報が受信されると、リクエスト情報に応答するレスポンス情報を生成する。具体的には、レスポンス情報生成部16は、受信されたリクエスト情報が初回のものであるか否かに応じて、異なるレスポンス情報を生成する。
ここで、初回のリクエスト情報とは、例えば、該当するポータルページがウェブブラウザにまだ表示されていない状態のクライアント装置から受信するリクエスト情報であってもよい。例えば、レスポンス情報生成部16は、初回のリクエスト情報の受信であるか否かを、同一セッション中における該当ポータルページに対する初回のリクエスト情報であるか否かにより、判断してもよい。なお、セッションとは、ウェブにおいて、ポータルサーバとクライアント装置との間で行われる一連の通信をいう。ウェブにおいてこのようなセッションを実現する技術には、公知の各種技術を適用可能である。
あるいは、例えば、レスポンス情報生成部16は、初回のリクエスト情報の受信であるか否かを、リクエスト情報の過去の受信履歴に基づいて判断してもよい。この場合、レスポンス情報生成部16は、そのクライアント装置からそのポータルページに対して過去に受信したリクエスト情報のうち最新のものを受信した時刻から、今回のリクエスト情報の受信時刻までの時間が閾値以上であるか否かに基づいて、初回のリクエスト情報であるか否かを判断してもよい。
また、レスポンス情報生成部16は、初回のリクエスト情報の受信に応じたレスポンス情報を次のようにして生成する。この場合、レスポンス情報生成部16は、リクエスト情報により要求対象となっているポータルページのレイアウト情報を、レイアウト情報記憶部14から取得する。このとき、リクエスト情報にユーザIDが含まれており、レイアウト情報記憶部14がユーザIDに対応づけてレイアウト情報を記憶していれば、レスポンス情報生成部16は、リクエスト情報に含まれるユーザIDに対応付けられたそのポータルページのレイアウト情報を取得してもよい。また、レスポンス情報生成部16は、取得したレイアウト情報が示す各ポートレットに関して、ポートレット差分情報記憶部13に記憶されたポートレットキャッシュデータおよびポートレット差分データを取得する。そして、レスポンス情報生成部16は、取得したレイアウト情報、ポートレットキャッシュデータおよびポートレット差分データを含むレスポンス情報を生成する。
また、レスポンス情報生成部16は、初回ではないリクエスト情報の受信に応じたレスポンス情報を次のようにして生成する。この場合、レスポンス情報生成部16は、リクエスト情報により要求対象となっているポータルページのレイアウト情報を参照する。そして、レスポンス情報生成部16は、該当するレイアウト情報が示す各ポートレットに関して、ポートレット差分情報記憶部13に記憶されたポートレット差分データのうち、前回のリクエスト情報受信時以降に記憶されたものを取得する。そして、レスポンス情報生成部16は、取得したポートレット差分データを含むレスポンス情報を生成する。
レスポンス情報送信部17は、レスポンス情報生成部16によって生成されるレスポンス情報を、クライアント装置に送信する。
以上のように構成されたポータルサーバ10の動作について、図面を参照して説明する。
まず、ポータルサーバ10のポートレット情報蓄積動作を図3に示す。
図3では、まず、ポートレット表示内容生成部11は、ポータルページに配置されうるポートレットについて、その表示内容を生成する(ステップS1)。例えば、前述のように、ポートレット表示内容生成部11は、ポートレットとして登録されたコンピュータ・プログラムを実行することにより、コンテンツ提供元装置から最新のコンテンツを取得して、ポートレットの表示内容であるHTML情報を生成する。
次に、ポートレット差分情報生成部12は、このポートレットのポートレットキャッシュデータが、ポートレット差分情報記憶部13に記憶されているか否かを判断する(ステップS2)。
ここで、該当するポートレットキャッシュデータがポートレット差分情報記憶部13にまだ記憶されていないと判断した場合、ポートレット差分情報生成部12は、ステップS1で生成されたポートレットの表示内容をポートレットキャッシュデータとして、ポートレット差分情報記憶部13に記憶させる(ステップS3)。このとき、ポートレット差分情報生成部12は、ステップS1でポートレットが生成された際にコンテンツが取得された取得日時を、ポートレットキャッシュデータに対応付けて記憶させる。
一方、該当するポートレットキャッシュデータがポートレット差分情報記憶部13に既に記憶されていると判断した場合、ポートレット差分情報生成部12は、ステップS1で生成されたポートレットの表示内容について、ポートレットキャッシュデータに対する差分を表すポートレット差分データを生成する(ステップS4)。
次に、ポートレット差分情報生成部12は、生成したポートレット差分データを、ポートレット差分情報記憶部13に記憶させる(ステップS5)。このとき、ポートレット差分情報生成部12は、ステップS1でポートレットが生成された際にコンテンツが取得された取得日時を、ポートレット差分データに対応付けて記憶させる。
以上のようなポートレット情報蓄積動作を、ポータルサーバ10は、ポータルページに配置されうる各ポートレットについて、所定のタイミングで繰り返し実行する。例えば、ポータルサーバ10は、クライアント装置からのキャッシュ更新要求に応じて、上述の動作を実行するようにしてもよい。また、ポータルサーバ10は、ポートレット差分データに有効期限を設定しておき、最新のポートレット差分データの有効期限が切れたタイミングで、上述の動作を実行するようにしてもよい。あるいは、ポータルサーバ10は、コンテンツ提供元装置にコンテンツの更新の有無を問い合わせることにより、更新が合ったタイミングで上述の動作を実行するようにしてもよい。
次に、ポータルサーバ10のリクエスト応答動作を図4に示す。
図4では、まず、リクエスト情報受信部15は、クライアント装置から、ポータルページを要求するリクエスト情報を受信する(ステップS11)。
次に、レスポンス情報生成部16は、ステップS11で受信されたリクエスト情報が、このクライアント装置からの初回のリクエスト情報の受信であるか否かを判断する(ステップS12)。例えば、前述のように、レスポンス情報生成部16は、セッションや受信履歴を用いて初回のリクエスト情報であるか否かを判断してもよい。
ステップS12において、初回のリクエスト情報であると判断した場合、レスポンス情報生成部16は、このリクエスト情報が要求対象とするポータルページについて、レイアウト情報記憶部14に記憶されたレイアウト情報を取得する(ステップS13)。
次に、レスポンス情報生成部16は、ステップS13で取得したレイアウト情報に基づいて、このポータルページに配置されたポートレットの一覧を取得する(ステップS14)。
次に、レスポンス情報生成部16は、ステップS14で取得した一覧が示す各ポートレットについて、ポートレット差分情報記憶部13に記憶されたポートレットキャッシュデータおよびポートレット差分データを取得する(ステップS15)。
次に、レスポンス情報生成部16は、ステップS13で取得したレイアウト情報と、ステップS15で取得した各ポートレットキャッシュデータおよび各ポートレット差分データとを含むレスポンス情報を生成する(ステップS16)。
一方、ステップS12において、初回のリクエスト情報ではないと判断した場合、レスポンス情報生成部16は、このリクエスト情報が要求対象とするポータルページのレイアウト情報に基づいて、このポータルページに配置されたポートレットの一覧を取得する(ステップS17)。
次に、レスポンス情報生成部16は、ステップS17で取得した各ポートレットについて、ポートレット差分情報記憶部13に記憶されたポートレット差分データのうち、前回のリクエスト情報受信時以降に記憶されたものを取得する(ステップS18)。
次に、レスポンス情報生成部16は、ステップS18で取得されたポートレット差分データを含むレスポンス情報を生成する(ステップS19)。
次に、レスポンス情報送信部17は、ステップS16またはステップ19で生成されたレスポンス情報を、クライアント装置に送信する(ステップS20)。
以上で、ポータルサーバ10はリクエスト応答動作を終了する。
このようにして、ポータルサーバ10は、送信したレスポンス情報に基づくポータルページを、クライアント装置に表示させる。例えば、クライアント装置は、初回のリクエスト情報に対するレスポンス情報(ステップS16で生成)を受信した場合、レスポンス情報に含まれるレイアウト情報、ポートレットキャッシュデータ、および、ポートレット差分データを結合することにより、ポータルページを表示可能である。また、クライアント装置は、再度のリクエスト情報に対するレスポンス情報(ステップS19で生成)を受信した場合、既に表示しているポータルページに対して、レスポンス情報に含まれるポートレット差分データを結合することにより、更新されたポータルページを表示可能である。
次に、本発明の第1の実施の形態の効果について述べる。
本発明の第1の実施の形態としてのポータルサーバは、ポートレットが配置されたポータルページをクライアント装置に提供する際の通信をより効率化することができる。
その理由は、ポートレット差分情報生成部が、ある時点でのポートレットの表示内容をポートレットキャッシュデータとして、他の時点でのポートレットの表示内容のポートレットキャッシュデータに対する差分を表すポートレット差分データを生成して、ポートレット差分情報記憶部に記憶させておくからである。そして、クライアント装置から、ポータルページに対する初回のリクエスト情報を受信した際には、レスポンス情報生成部が、そのポータルページに配置されたポートレットを表すレイアウト情報と、そのレイアウト情報が示す各ポートレットに関するポートレットキャッシュデータおよびポートレット差分データとを含むレスポンス情報を生成し、レスポンス情報送信部が、そのレスポンス情報をクライアント装置に送信する。そして、クライアント装置から、ポートレットが配置されたポータルページに対する再度のリクエスト情報を受信した際には、レスポンス情報生成部が、そのポータルページに配置された各ポートレットに関するポートレット差分データのうち、前回のリクエスト受信時以降に記憶されたものを含むレスポンス情報を生成し、レスポンス情報送信部が、ポートレット差分データを含むレスポンス情報をクライアント装置に送信するからである。
これにより、ポータルサーバは、ポータルページに対するリクエスト情報をクライアント装置から受信する度に、前回そのクライアント装置に送信した内容と同一の情報を多く含むポータルページの表示内容を、クライアント装置に送信する必要がない。また、このような場合に、ポータルサーバは、前回のリクエスト受信時以降に取得されたポートレット差分データをレスポンス情報に含めて送信するので、一度送信したポートレット差分データを再度送信することがない。
これにより、本実施の形態としてのポータルサーバは、クライアント装置との間のデータ通信量を低減することができる。このようにデータ通信量を低減することにより、本実施の形態としてのポータルサーバは、クライアント装置との間のネットワーク帯域幅が狭い場合にも有効である。その結果、本実施の形態としてのポータルサーバは、クライアント装置におけるリクエスト情報の送信からポータルページの表示までの時間を高速化することができる。
また、本実施の形態としてのポータルサーバが、ポータルページに対するリクエスト情報を、複数のクライアント装置から近い時期に受信した場合を考える。この場合、ポータルサーバは、それぞれのクライアント装置に送信するためのポートレットキャッシュデータおよびポートレット差分データを、ポートレット差分情報記憶部から取得することができる。したがって、このような場合に、ポータルサーバは、ポートレットを構成するコンテンツの最新情報をコンテンツ提供元装置に問い合わせる通信を、各クライアント装置からのリクエスト情報の受信毎に行う必要がない。したがって、ポータルサーバは、ほぼ同一のコンテンツの最新情報をコンテンツ提供元装置から取得する通信を、重複して行うことがない。
これにより、本実施の形態としてのポータルサーバは、コンテンツ提供元装置との間でのデータ通信量を低減することができる。なお、特許文献1に記載の関連技術では、コンテンツ提供元装置が、可変データ部分を文書配送サーバに送信するので、文書配送サーバは、クライアント装置からの要求の度に最新情報をコンテンツ提供元装置から取得する通信を行う必要はない。しかしながら、そのために、コンテンツ提供元装置は、可変データの送信先となる文書配送サーバを記憶しておかなければならない。また、この関連技術では、コンテンツ提供元装置が、コンテンツを定型部分と可変データ部分とにあらかじめ分けておかなければならない。このように、この関連技術は、コンテンツ提供元装置側の負荷を増大させている。本発明の第1の実施の形態としてのポータルサーバは、ポートレット差分情報生成部が、ポートレットキャッシュデータおよびポートレット差分データの生成を行うため、コンテンツ提供元装置の負荷を増大させることがない。したがって、本実施の形態としてのポータルサーバは、コンテンツ提供元装置の負荷を増大させることなく、コンテンツ提供元装置との間のデータ通信量を低減することができる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本発明の第2の実施の形態としてのポータルシステム2の構成を図5に示す。図5において、ポータルシステム2は、ポータルサーバ20と、クライアント装置30とを含む。また、ポータルサーバ20およびクライアント装置30は、インターネット、LAN、公衆回線網、無線通信網またはこれらの組合せ等によって構成されるネットワークを介して、互いに通信可能に接続されている。また、ポータルサーバ20は、コンテンツ提供元装置40と、ネットワークを介して通信可能に接続されている。なお、図5には、ポータルサーバ、クライアント装置、および、コンテンツ提供元装置を1つずつ示しているが、本発明のポータルシステムが備える各装置の数および本発明のポータルシステムが接続されるコンテンツ提供元装置の数を限定するものではない。
次に、ポータルシステム2を構成する各装置の機能ブロックを図6に示す。図6において、ポータルサーバ20は、本発明の第1の実施の形態としてのポータルサーバ10に対して、ポートレット差分情報生成部12に替えてポートレット差分情報生成部22と、ポートレット差分情報記憶部13に替えてポートレット差分情報記憶部23と、レイアウト情報記憶部14に替えてレイアウト情報記憶部24と、リクエスト情報受信部15に替えてリクエスト情報受信部25と、レスポンス情報生成部16に替えてレスポンス情報生成部26とを備え、さらに、レイアウト情報生成部28と、レイアウト差分情報生成部29とを備える点が異なる。ここで、ポータルサーバ20は、図1に示した本発明の第1の実施の形態としてのポータルサーバ10のハードウェア構成と同一の構成要素を備えたコンピュータ装置によって構成される。また、レイアウト情報生成部28およびレイアウト差分情報生成部29は、ROM1003または記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001によって構成される。なお、ポータルサーバ20を構成する各機能ブロックのハードウェア構成は、上述の構成に限定されない。
また、図6において、クライアント装置30は、リクエスト情報送信部31と、レスポンス情報受信部32と、ポータルページ表示部33と、表示中情報取得部34と、差分データ結合部35とを備える。ここで、クライアント装置30は、図7に示すように、CPU2001と、RAM2002と、ROM2003と、ハードディスク等の記憶装置2004と、ネットワークインタフェース2005と、入力装置2006と、表示装置2007とを備えたコンピュータ装置によって構成されている。また、リクエスト情報送信部31と、レスポンス情報受信部32とは、ネットワークインタフェース2005と、ROM2003または記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001とによって構成される。また、ポータルページ表示部33は、入力装置2006と、表示装置2007と、ROM2003または記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001とによって構成される。また、表示中情報取得部34と、差分データ結合部35とは、ROM2003または記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001によって構成される。なお、クライアント装置30を構成する各機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、ポータルサーバ20の各機能ブロックについて説明する。
ポートレット差分情報生成部22は、本発明の第1の実施の形態におけるポートレット差分情報生成部12と同様に、ポートレットキャッシュデータおよびポートレット差分データをポートレット差分情報記憶部23にそれぞれ記憶させる。さらに、ポートレット差分情報生成部22は、ポートレットキャッシュデータおよびポートレット差分データに、該当するポートレットに対するアクセス権限を有するユーザのユーザIDまたはグループIDをそれぞれ対応付けて、ポートレット差分情報記憶部23に記憶させる。例えば、ポートレット差分情報生成部22は、ポートレットに対するユーザのアクセス権限を管理するアクセス権限管理装置(図示せず)から、そのような情報を取得してもよい。
また、ポートレット差分情報生成部22は、さらに、ポートレットキャッシュデータおよびポートレット差分データに、そのデータサイズをそれぞれ対応付けて、ポートレット差分情報記憶部23に記憶させる。
また、ポートレット差分情報生成部22は、所定のキャッシュ更新条件が満たされた時点で、ポートレット表示内容生成部11を用いて生成されたポートレットの表示内容を、新たなポートレットキャッシュデータとして、ポートレット差分情報記憶部23に記憶させる。
キャッシュ更新条件とは、例えば、ポートレット差分情報記憶部23に、該当するポートレットのポートレットキャッシュデータが記憶されていないことであってもよい。
また、キャッシュ更新条件とは、例えば、ポートレットキャッシュデータおよびポートレット差分データのデータサイズが所定の関係であることであってもよい。例えば、ポートレット差分情報生成部22は、最新のポートレット差分データのデータサイズが、ポートレットキャッシュデータのデータサイズより大きくなった場合、新たなポートレットキャッシュデータを記憶させてもよい。
また、キャッシュ更新条件とは、例えば、ポートレットキャッシュデータの有効期限が切れたことであってもよい。例えば、ポートレット差分情報生成部22は、各ポートレットキャッシュデータの取得日時を基準としてあらかじめ定められた期間が経過すると、有効期限が切れたと判断してもよい。
また、キャッシュ更新条件とは、例えば、クライアント装置30から、ポートレットキャッシュデータの更新要求を受信したことであってもよい。例えば、ポートレット差分情報生成部22は、そのようなポートレットキャッシュデータの更新を要求する情報を、リクエスト情報受信部25を介して取得可能である。
ポートレット差分情報記憶部23は、ポートレットキャッシュデータおよびポートレット差分データに、取得日時と、ユーザIDまたはグループIDと、データサイズとを対応付けて記憶している。ポートレット差分情報記憶部23に記憶される情報の一例を図8に示す。図8において、各行は、ポートレットキャッシュデータまたはポートレット差分データに関する情報を表す。
例えば、1行目は、ユーザAおよびユーザBがアクセス権限を持つポートレットAのポートレットキャッシュデータを表している。なお、ユーザIDがXのユーザを、ユーザXと記載するものとする。また、ポートレットIDがXのポートレットを、ポートレットXと記載するものとする。この例では、ポートレットキャッシュデータは、HTMLにおけるdiv要素として表されている。
また、例えば、4行目は、グループCがアクセス権限を持つポートレットCのポートレットキャッシュデータを表している。なお、グループIDがXのユーザを、グループXと記載するものとする。
また、例えば、5行目および6行目は、それぞれ、ポートレット差分データを表している。これらのポートレット差分データは、ポートレットキャッシュデータである4行目に対する差分を表している。この例では、これらのポートレット差分データは、変更された要素がXPathにより記述された変更箇所と、変更前後の内容を表す変更内容とにより構成されている。
また、各ポートレットキャッシュデータおよびポートレット差分データには、さらにデータサイズと、取得日時とが対応付けられている。取得日時は、前回のリクエスト情報の受信時刻との比較のために利用される。また、データサイズは、ポートレット差分データが肥大化し、ポートレットキャッシュデータ以上のサイズになった場合にポートレットキャッシュデータの再取得を行うために利用される。
レイアウト情報生成部28は、ポータルページに配置されるポートレットを設定する設定情報の取得に応じて、レイアウト情報を生成する。例えば、レイアウト情報生成部28は、クライアント装置30からそのような設定情報を取得してもよい。また、レイアウト情報生成部28は、そのような設定情報を、ユーザIDとともに取得してもよい。また、レイアウト情報生成部28は、そのような設定情報を、リクエスト情報受信部25を介して取得可能である。
また、レイアウト情報生成部28によって生成されるレイアウト情報は、本発明の第1の実施の形態におけるレイアウト情報と同様に構成される。例えば、レイアウト情報生成部28は、設定情報として、ポータルページに配置されるポートレットIDの一覧と、それらの配置情報とを含む情報を取得する。そして、レイアウト情報生成部28は、取得した設定情報に基づいて、各ポートレットの表示内容の記述が組み込まれる箇所に空のHTML要素が含まれたHTML文書を、レイアウト情報として生成してもよい。
レイアウト差分情報生成部29は、ある時点においてレイアウト情報生成部28によって生成されたレイアウト情報をレイアウトキャッシュデータとして、レイアウト情報記憶部24に記憶させる。また、レイアウト差分情報生成部29は、他の時点においてレイアウト情報生成部28によって生成されたレイアウト情報について、レイアウトキャッシュデータに対する差分を表すレイアウト差分データを生成する。そして、レイアウト差分情報生成部29は、レイアウト差分データを、レイアウト情報記憶部24に記憶させる。
また、レイアウト差分情報生成部29は、レイアウト情報生成部28によって設定情報とともにユーザIDが取得されていた場合、生成したレイアウトキャッシュデータまたはレイアウト差分データを、ユーザIDに対応付けてレイアウト情報記憶部24に記憶させてもよい。
レイアウト情報記憶部24は、レイアウトキャッシュデータおよびレイアウト差分データに、その生成日時を対応付けて記憶する。また、レイアウト情報記憶部24は、レイアウトキャッシュデータおよびレイアウト差分データに、さらにユーザIDを対応付けて記憶してもよい。レイアウト情報記憶部24に記憶される情報の一例を図9に示す。図9において、1行目は、ユーザAのレイアウトキャッシュデータを表し、2行目は、ユーザBのレイアウトキャッシュデータを表している。各レイアウトキャッシュデータは、HTML文書として表されている。また、3行目は、ユーザBのレイアウト差分データを表している。3行目のレイアウト差分データは、2行目のレイアウトキャッシュデータに対する差分である。この例では、レイアウト差分データは、変更された要素がXPathにより記述された変更箇所と、変更内容とにより構成されている。
リクエスト情報受信部25は、ポータルページに対するリクエスト情報として、ユーザIDを含むリクエスト情報を受信する。
その他、リクエスト情報受信部25は、クライアント装置30から、各種情報を受信する。例えば、リクエスト情報受信部25は、クライアント装置30から、ポータルページに配置されるポートレットを設定する設定情報を受信すると、その設定情報を、レイアウト情報生成部28に通知する。また、リクエスト情報受信部25は、クライアント装置30から、ポートレットキャッシュデータまたはポートレット差分データの更新を要求する更新要求情報を受信すると、その更新要求情報を、ポートレット差分情報生成部22に通知する。
レスポンス情報生成部26は、本発明の第1の実施の形態におけるレスポンス情報生成部16と同様に構成されるが、以下の点が異なる。
レスポンス情報生成部26は、初回のリクエスト情報の受信に応じたレスポンス情報に含めるレイアウト情報として、リクエスト情報に含まれるユーザIDに対応付けられたレイアウトキャッシュデータおよびレイアウト差分データを含める。
また、レスポンス情報生成部26は、初回のリクエスト情報の受信に応じたレスポンス情報に含めるポートレットキャッシュデータおよびポートレット差分データとして、リクエスト情報に含まれるユーザIDにそれぞれ対応付けられたものを用いる。
つまり、初回のリクエスト情報の受信に応じたレスポンス情報は、ユーザIDにそれぞれ対応付けられたレイアウトキャッシュデータおよびレイアウト差分データと、ユーザIDにそれぞれ対応付けられた各ポートレットキャッシュデータおよび各ポートレット差分データとを含む。
また、レスポンス情報生成部26は、再度のリクエスト情報の受信に応じたレスポンス情報に、レイアウト情報記憶部24に記憶されたレイアウト差分データのうち、前回のリクエスト情報受信時以降にユーザIDに対応付けて記憶されたものを含める。
なお、このとき、レイアウト情報記憶部24に、前回のリクエスト情報受信時以降に記憶された新たなレイアウトキャッシュデータがある場合、レスポンス情報生成部26は、最新のレイアウトキャッシュデータと、そのレイアウトキャッシュデータ以降に記憶されたレイアウト差分データとをレスポンス情報に含めるようにする。
また、レスポンス情報生成部26は、再度のリクエスト情報の受信に応じたレスポンス情報に、ポートレット差分情報記憶部23に記憶されたポートレット差分データのうち、前回のリクエスト情報受信時以降にユーザIDに対応付けて記憶されたものを含める。
なお、このとき、ポートレット差分情報記憶部23に、前回のリクエスト情報受信時以降に記憶された新たなポートレットキャッシュデータがある場合、レスポンス情報生成部26は、最新のポートレットキャッシュデータと、そのポートレットキャッシュデータ以降に記憶されたポートレット差分データとを、レスポンス情報に含めるようにする。
つまり、再度のリクエスト情報の受信に応じたレスポンス情報は、前回のリクエスト情報の受信時以降にユーザIDに対応付けて記憶されたレイアウト差分データおよびポートレット差分データを含む。さらに、再度のリクエスト情報の受信に応じたレスポンス情報は、前回のリクエスト情報の受信時以降にユーザIDに対応付けて記憶されたレイアウトキャッシュデータまたはポートレットキャッシュデータを、状況に応じて含む場合がある。
なお、前回のリクエスト情報の受信時以降にレイアウト情報記憶部24にユーザIDに対応付けて記憶された情報がない場合、レスポンス情報は、レイアウト差分データおよびレイアウトキャッシュデータのいずれも含まない。また、前回のリクエスト情報の受信時以降に、あるポートレットについてポートレット差分情報記憶部23にユーザIDに対応付けて記憶された情報がない場合、レスポンス情報は、そのポートレットに関するポートレット差分データおよびポートレットキャッシュデータのいずれも含まない。
また、レスポンス情報生成部26は、初回または再度のレスポンス情報に含めるポートレットキャッシュデータおよびポートレット差分データとして、ユーザが所属するグループのグループIDに対応付けられたものを用いてもよい。
次に、クライアント装置30の各機能ブロックについて説明する。
リクエスト情報送信部31は、ポータルサーバ20に対して、ポータルページのリクエスト情報をユーザIDとともに送信する。その他、リクエスト情報送信部31は、ポータルサーバ20に対して各種情報を送信する。例えば、リクエスト情報送信部31は、ポータルサーバ20に対して、ポータルページに配置されるポートレットを設定する設定情報を送信する。この場合、リクエスト情報送信部31は、入力装置2006を介して取得した設定情報を、ポータルサーバ20に対して送信すればよい。また、リクエスト情報送信部31は、ポータルサーバ20に対して、ポートレットキャッシュデータまたはポートレット差分データの更新を要求する更新要求情報を送信してもよい。
レスポンス情報受信部32は、ポータルサーバ20からレスポンス情報を受信する。
ポータルページ表示部33は、レスポンス情報に基づいて後述の差分データ結合部35によって生成されるポータルページを表示する。
表示中情報取得部34は、ポータルページ表示部33によって表示中のポータルページから、ポートレットの表示内容と、ポートレットのレイアウト情報とを抽出する。例えば、表示中情報取得部34は、初回のリクエスト情報に応じて受信されたレスポンス情報に基づいて、ポータルページにおいて各ポートレットの表示内容が組み込まれた箇所を記憶しておいてもよい。これにより、表示中情報取得部34は、表示中のポータルページの表示内容から、各ポートレットの表示内容を抽出可能である。また、この場合、表示中のポータルページの表示内容から各ポートレットの表示内容が抽出されて残った部分が、レイアウト情報となる。
差分データ結合部35は、レスポンス情報の受信に応じて、ポートレットの表示内容を生成する。このとき、差分データ結合部35は、レスポンス情報の受信が初回であるか否かに応じて、生成処理を分岐する。なお、初回のレスポンス情報とは、リクエスト情報送信部31によって初回に送信されたリクエスト情報に応じて、レスポンス情報受信部32によって受信されたレスポンス情報をいうものとする。また、再度のレスポンス情報とは、リクエスト情報送信部31によって再度送信されたリクエスト情報に応じて、レスポンス情報受信部32によって受信されたレスポンス情報をいうものとする。また、差分データ結合部35は、初回のレスポンス情報であるか否かを、該当するポータルページがポータルページ表示部33によって表示中であるか否かに基づいて判断してもよい。
前述のように、初回のレスポンス情報は、レイアウトキャッシュデータと、レイアウト差分データと、各ポートレットキャッシュデータと、各ポートレット差分データとを含む。そこで、差分データ結合部35は、レイアウトキャッシュデータに、レイアウト差分データが示す差分を反映させることにより、レイアウト情報を生成する。このようにして生成されたレイアウト情報は、例えば、前述のように、各ポートレットの表示内容の記述が組み込まれる箇所に空のHTML要素が含まれたHTML文書である。また、差分データ結合部35は、各ポートレットキャッシュデータに、対応するポートレット差分データが示す差分を反映させることにより、各ポートレットの表示内容を生成する。このようにして生成された各ポートレットの表示内容は、例えば、前述のように、HTML文書の一部を構成するHTML情報である。そして、差分データ結合部35は、レイアウト情報と、各ポートレットの表示内容とを結合することにより、ポータルページの表示内容を生成する。また、差分データ結合部35は、生成したポータルページの表示内容を、ポータルページ表示部33に表示させる。
なお、初回のレスポンス情報が、レイアウトキャッシュデータを含み、レイアウト差分データを含まない場合、差分データ結合部35は、レイアウトキャッシュデータをそのままレイアウト情報とすればよい。また、初回のレスポンス情報が、あるポートレットキャッシュデータに対応するポートレット差分データを含まない場合、差分データ結合部35は、そのポートレットキャッシュデータをそのまま表示内容とすればよい。
また、前述のように、再度のレスポンス情報は、レイアウト差分データと、各ポートレットの差分データとを含む。そこで、差分データ結合部35は、表示中情報取得部34によって取得されたレイアウト情報に、レスポンス情報に含まれるレイアウト差分データが示す差分を反映させることにより、新たなレイアウト情報を生成する。また、差分データ結合部35は、表示中情報取得部34によって取得された各ポートレットの表示内容に、レスポンス情報に含まれるポートレット差分データが示す差分を反映させることにより、新たな各ポートレットの表示内容を生成する。そして、差分データ結合部35は、レイアウト情報と、各ポートレットの表示内容とを結合することにより、新たなポータルページの表示内容を生成する。また、差分データ結合部35は、生成したポータルページの表示内容を、ポータルページ表示部33に表示させる。
なお、再度のレスポンス情報が、レイアウト差分データを含まない場合、差分データ結合部35は、表示中情報取得部34によって取得されたレイアウト情報をそのまま新たなレイアウト情報とすればよい。また、再度のレスポンス情報が、あるポートレットに関するポートレット差分データを含まない場合、差分データ結合部35は、表示中情報取得部34によって取得されたそのポートレットの表示内容をそのまま新たな表示内容とすればよい。また、再度のレスポンス情報が、レイアウトキャッシュデータとレイアウト差分データを含む場合、差分データ結合部35は、初回のレスポンス情報の場合と同様に、レイアウト情報を生成すればよい。また、再度のレスポンス情報が、あるポートレットについてポートレットキャッシュデータとポートレット差分データを含む場合、差分データ結合部35は、初回のレスポンス情報の場合と同様に、そのポートレットの表示内容を生成すればよい。
また、表示中情報取得部34および差分データ結合部35は、クライアント装置30上で動作するウェブブラウザに付加的な機能を組み込むプラグインにより実現されてもよい。あるいは、表示中情報取得部34および差分データ結合部35は、ポータルページにあらかじめ組み込まれたJavaScript(登録商標)等のクライアント処理が実行されることにより実現されてもよい。
以上のように構成されたポータルシステム2の動作について、図面を参照して説明する。
まず、ポータルサーバ20が、ポートレットキャッシュデータおよびポートレット差分データを蓄積する動作を、図10に示す。ポータルサーバ20は、ポータルページに配置されうる各ポートレットについて、そのポートレットに対するアクセス権を有するユーザのユーザIDまたはグループID毎に、以下の蓄積動作を実行する。
図10では、まず、ポートレット差分情報生成部22は、ポートレットを構成するコンテンツが更新されているか否かを表す情報を、コンテンツ提供元装置40に対して問い合わせることにより取得する(ステップS31)。
次に、ポートレット差分情報生成部22は、ステップS31で取得した情報が、更新されていることを表すか否かを判断する(ステップS32)。
ここで、更新されていると判断した場合、ポートレット表示内容生成部11は、ポートレットを構成するコンテンツを、コンテンツ提供元装置40から取得することによりポートレットの表示内容を生成する(ステップS33)。
次に、ポートレット差分情報生成部22は、キャッシュ更新条件が満たされるか否かを判断する(ステップS34)。例えば、前述のように、ポートレット差分情報生成部22は、ポートレット差分情報記憶部23に、該当するポートレットキャッシュデータが保存されていないことをキャッシュ更新条件として判断を行ってもよい。また、例えば、ポートレット差分情報生成部22は、ポートレット差分情報記憶部23に記憶された最新のポートレット差分データのデータサイズが、ポートレットキャッシュデータのデータサイズより大きいことをキャッシュ更新条件として判断を行ってもよい。また、例えば、ポートレット差分情報生成部22は、ポートレットキャッシュデータの有効期限が切れたことをキャッシュ更新条件として判断を行ってもよい。
ここで、キャッシュ更新条件を満たすと判断した場合、ポートレット差分情報生成部22は、ステップS33で生成したポートレットの表示内容を、新たなポートレットキャッシュデータとして、該当するユーザIDまたはグループIDに対応付けて、ポートレット差分情報記憶部23に記憶させる(ステップS35)。
一方、キャッシュ更新条件を満たさないと判断した場合、ポートレット差分情報生成部22は、ステップS33で生成したポートレットの表示内容について、ポートレットキャッシュデータに対する差分を、ポートレット差分データとして生成する(ステップS36)。
次に、ポートレット差分情報生成部22は、生成したポートレット差分データを、該当するユーザIDまたはグループIDに対応付けて、ポートレット差分情報記憶部23に追加して記憶させる(ステップS37)。
以上で、ポータルサーバ20は、ポートレットキャッシュデータおよびポートレット差分データの蓄積動作を終了する。
また、ステップS32において、更新されていないと判断した場合、ポータルサーバ20は、蓄積動作を終了する。
以上の蓄積動作を、ポータルサーバ20は、あらかじめ定められたタイミングで実行する。あらかじめ定められたタイミングとは、例えば、所定の間隔であってもよい。あるいは、あらかじめ定められたタイミングとは、ポートレット差分データの有効期限が切れたタイミングであってもよい。あるいは、あらかじめ定められたタイミングとは、クライアント装置30からポートレットキャッシュデータやポートレット差分データの更新要求情報を受信したタイミングであってもよい。
次に、ポータルサーバ20が、レイアウトキャッシュデータおよびレイアウト差分データを蓄積する動作を、図11に示す。
図11では、まず、レイアウト情報生成部28は、クライアント装置30から、ポータルページに配置されるポートレットを設定する設定情報を受信する(ステップS41)。前述のように、設定情報は、配置されるポートレットを特定する情報の一覧や、その配置関係を表す情報を含んでいてもよい。また、設定情報は、ユーザIDを含んでいてもよい。
次に、レイアウト情報生成部28は、ステップS41で取得された設定情報に基づいて、レイアウト情報を生成する(ステップS42)。ここで生成されるレイアウト情報は、前述のように、例えば、各ポートレットを表す空の要素を含むHTML文書であってもよい。
次に、レイアウト情報生成部28は、所定のレイアウト更新条件が満たされるか否かを判断する(ステップS43)。例えば、レイアウト情報生成部28は、レイアウト情報記憶部24に該当するレイアウトキャッシュデータが保存されていないことをレイアウト更新条件として、判断を行ってもよい。また、例えば、レイアウト情報生成部28は、レイアウト情報記憶部24に記憶された最新のレイアウト差分データのデータサイズが、レイアウトキャッシュデータのデータサイズより大きいことをレイアウト更新条件として、判断を行ってもよい。
ここで、レイアウト更新条件を満たすと判断した場合、レイアウト情報生成部28は、ステップS42で生成したレイアウト情報を、新たなレイアウトキャッシュデータとして、該当するユーザIDに対応付けて、レイアウト情報記憶部24に記憶させる(ステップS44)。
一方、レイアウト更新条件を満たさないと判断した場合、レイアウト情報生成部28は、ステップS42で生成したレイアウト情報について、レイアウトキャッシュデータに対する差分を、レイアウト差分データとして生成する(ステップS45)。
次に、レイアウト情報生成部28は、生成したレイアウト差分データを、該当するユーザIDに対応付けて、レイアウト情報記憶部24に追加して記憶させる(ステップS46)。
以上で、ポータルサーバ20は、レイアウトキャッシュデータおよびレイアウト差分データの蓄積動作を終了する。
次に、ポータルシステム2が、ポータルページを提供する動作を、図12および図13を参照して説明する。
図12では、まず、クライアント装置30のリクエスト情報送信部31は、ポータルサーバ20に対して、ポータルページを要求するリクエスト情報を送信する(ステップS51)。クライアント装置30は、このリクエスト情報にユーザIDを含める。
次に、図13において、ポータルサーバ20のリクエスト情報受信部25は、リクエスト情報を受信する(ステップS52)。
次に、レスポンス情報生成部26は、受信されたリクエスト情報が初回のものであるか否かを判断する(ステップS53)。
ここで、初回のレスポンス情報であると判断した場合、レスポンス情報生成部26は、このユーザIDに対応付けてレイアウト情報記憶部24に記憶されているレイアウトキャッシュデータと、レイアウト差分データとを取得する(ステップS54)。
次に、レスポンス情報生成部26は、ステップS54で取得したレイアウトキャッシュデータに基づいて、このポータルページに配置されたポートレットの一覧を取得する(ステップS55)。
次に、レスポンス情報生成部26は、このユーザIDに対応付けて、各ポートレットに関連してポートレット差分情報記憶部23に記憶されているポートレットキャッシュデータおよびポートレット差分データを取得する(ステップS56)。
次に、レスポンス情報生成部26は、ステップS54で取得したレイアウトキャッシュデータおよびレイアウト差分データと、ステップS56で取得した各ポートレットキャッシュデータおよび各ポートレット差分データとを含むレスポンス情報を生成する(ステップS57)。
一方、ステップS53において初回のリクエスト情報でない(2回目以降である)と判断した場合、レスポンス情報生成部26は、このユーザIDに対応付けてレイアウト情報記憶部24に記憶されているレイアウト差分データのうち、前回のリクエスト情報受信時以降に記憶されたものを取得する(ステップS58)。
なお、前述のように、前回のリクエスト情報の受信時以降にレイアウト情報記憶部24に記憶された情報の中に、レイアウトキャッシュデータがある場合、レスポンス情報生成部26は、そのレイアウトキャッシュデータと、そのレイアウトキャッシュデータ以降に記憶されたレイアウト差分データを取得するようにする。
次に、レスポンス情報生成部26は、このポータルページに配置されたポートレットの一覧を、レイアウトキャッシュデータを参照することにより取得する(ステップS59)。
次に、レスポンス情報生成部26は、各ポートレットに関してポートレット差分情報記憶部23に記憶されているポートレット差分データのうち、前回のリクエスト情報の受信時以降に、このユーザIDに対応付けて記憶されたものを取得する(ステップS60)。
なお、前述のように、前回のリクエスト情報の受信時以降にポートレット差分情報記憶部23に記憶された情報の中に、ポートレットキャッシュデータがある場合、レスポンス情報生成部26は、そのポートレットについては、そのポートレットキャッシュデータと、そのポートレットキャッシュデータ以降に記憶されたポートレット差分データを取得するようにする。
次に、レスポンス情報生成部26は、ステップS58で取得したレイアウト差分データと、ステップS60で取得したポートレット差分データとを含むレスポンス情報を生成する(ステップS61)。なお、レスポンス情報生成部26は、ステップS58でレイアウトキャッシュデータを取得していれば、そのレイアウトキャッシュデータもレスポンス情報に含める。また、レスポンス情報生成部26は、ステップS60でポートレットキャッシュデータを取得していれば、そのポートレットキャッシュデータもレスポンス情報に含める。
次に、レスポンス情報送信部17は、ステップS57またはステップS61で生成したレスポンス情報を、クライアント装置30に対して送信する(ステップS62)。
次に、図12に戻り、クライアント装置30のレスポンス情報受信部32は、ポータルサーバ20からレスポンス情報を受信する(ステップS63)。
次に、差分データ結合部35は、ステップS63で受信されたレスポンス情報が、初回のレスポンス情報であるか否かを判断する(ステップS64)。
ここで、初回のレスポンス情報であると判断した場合、差分データ結合部35は、レスポンス情報に含まれるレイアウトキャッシュデータに、レイアウト差分データが示す差分を反映させることにより、レイアウト情報を生成する(ステップS65)。
次に、差分データ結合部35は、レスポンス情報に含まれる各ポートレットキャッシュデータに、対応するポートレット差分データが示す差分を反映させることにより、各ポートレットの表示内容を生成する(ステップS66)。
次に、差分データ結合部35は、ステップS65で生成したレイアウト情報と、ステップS66で生成した各ポートレットの表示内容とを結合することにより、ポータルページの表示内容を生成する(ステップS67)。
一方、ステップS64で、初回のレスポンス情報ではないと判断された場合、表示中情報取得部34は、ポータルページ表示部33によって表示中のポータルページから、ポートレットの表示内容と、ポートレットのレイアウト情報とを抽出する(ステップS68)。
次に、差分データ結合部35は、表示中情報取得部34によって取得されたレイアウト情報に、レスポンス情報に含まれるレイアウト差分データが示す差分を反映させることにより、新たなレイアウト情報を生成する(ステップS69)。
なお、前述のように、レスポンス情報に、さらにレイアウトキャッシュデータも含まれている場合がある。この場合、差分データ結合部35は、表示中情報取得部34によって取得されたレイアウト情報を用いずに、レスポンス情報に含まれるレイアウトキャッシュデータに、レイアウト差分データが示す差分を反映させることにより、新たなレイアウト情報を生成すればよい。
次に、差分データ結合部35は、表示中情報取得部34によって取得された各ポートレットの表示内容に、レスポンス情報に含まれるポートレット差分データが示す差分を反映させることにより、各ポートレットの新たな表示内容を生成する(ステップS70)。
なお、前述のように、レスポンス情報には、さらにポートレットキャッシュデータも含まれている場合がある。この場合、差分データ結合部35は、そのポートレットについては、表示中情報取得部34によって取得された表示内容を用いずに、レスポンス情報に含まれるポートレットキャッシュデータに、対応するポートレット差分データが示す差分を反映させることにより、そのポートレットの新たな表示内容を生成する。
次に、差分データ結合部35は、ステップS69で生成した新たなレイアウト情報と、ステップS70で生成した各ポートレットの新たな表示内容とを結合することにより、新たなポータルページを生成する(ステップS71)。
次に、ポータルページ表示部33は、ステップS67またはステップS71で生成されたポータルページを表示する(ステップS72)。
以上で、ポータルシステム2は動作を終了する。
次に、ポータルシステム2の動作の具体例について説明する。ここでは、ポートレット差分情報記憶部23に、図8に示す情報が格納され、レイアウト情報記憶部24に、図9に示す情報が格納されているものとする。
まず、クライアント装置30のリクエスト情報送信部31は、2011/11/07の 08:00に、ポートレットCが配置されたポータルページの初回のリクエスト情報を、ポータルサーバ20に送信したとする(ステップS51)。このとき、リクエスト情報には、グループCに属するユーザAのユーザIDが含まれているものとする。
次に、ポータルサーバ20のレスポンス情報生成部26は、初回のリクエスト情報であると判断する(ステップS53でYes)。
そこで、レスポンス情報生成部26は、レイアウト情報記憶部24において、ユーザAに対応付けられたレイアウトキャッシュデータおよびレイアウト差分データを取得する(ステップS54)。この場合、図9のレイアウト情報記憶部24は、ユーザAのレイアウト差分データを記憶していない。そこで、レスポンス情報生成部26は、ユーザAのレイアウトキャッシュデータ(図9の1行目)のみを取得する。
次に、レスポンス情報生成部26は、ポートレットCに関して、ポートレット差分情報記憶部23に記憶された情報のうち、グループCに対応付けられたポートレットキャッシュデータおよびポートレット差分データを取得する(ステップS56)。この場合、2011/11/07の08:00の時点で、そのような情報は、図8の4行目のポートレットキャッシュデータのみである。
次に、レスポンス情報生成部26は、ユーザAのレイアウトキャッシュデータ(図9の1行目)と、グループCのポートレットCのポートレットキャッシュデータ(図8の4行目)とを含むレスポンス情報を生成する(ステップS57)。
そして、レスポンス情報送信部17は、生成されたレスポンス情報を、クライアント装置30に送信する(ステップS62)。
クライアント装置30では、初回のレスポンス情報に応じて(ステップS64でYes)、差分データ結合部35が、レスポンス情報に含まれる各情報を結合することによりポータルページを生成する(ステップS65〜S67)。
そして、ポータルページ表示部33は、ポータルページを表示する(ステップS72)。
次に、クライアント装置30のリクエスト情報送信部31が、ポータルページ表示部33によりポータルページが表示された状態で、2011/11/07の13:00に、同一のポータルページに対するリクエスト情報を再度送信したことを想定する(ステップS51)。
ここで、ポータルサーバ20のレスポンス情報生成部26は、初回のリクエスト情報ではないと判断する(ステップS53でNo)。
そこで、レスポンス情報生成部26は、前回のリクエスト情報の受信時以降に、ユーザAに対応付けてレイアウト情報記憶部24に記憶された情報を検索するが、そのような情報はないと判断する(ステップS58)。
次に、レスポンス情報生成部26は、前回のリクエスト情報の受信時以降に、ポートレットCに関連してポートレット差分情報記憶部23に記憶された情報のうち、グループCに対応付けられたものを取得する。この場合、そのような情報は、図8の5行目および6行目のポートレット差分データである。
そこで、レスポンス情報生成部26は、図8の5行目および6行目のポートレット差分データを含むレスポンス情報を生成する(ステップS61)。
そして、レスポンス情報送信部17は、生成されたレスポンス情報を、クライアント装置30に送信する(ステップS62)。
クライアント装置30では、初回のレスポンス情報ではないので(ステップS64でNo)、表示中情報取得部34は、表示中のポータルページから、ポートレットCの表示内容と、ポータルページのレイアウト情報とを取得する(ステップS68)。
次に、差分データ結合部35は、受信されたレスポンス情報にレイアウト差分データが含まれていなかったので、表示中のポータルページから取得されたレイアウト情報を、そのまま用いる(ステップS69)。
次に、差分データ結合部35は、表示中のポータルページから取得されたポートレットCの表示内容に、レスポンス情報に含まれるポートレット差分データ(図8の5行目および6行目)を適用し、新たなポートレットCの表示内容を生成する(ステップS70)。
次に、差分データ結合部35は、表示中のポータルページから取得されたレイアウト情報と、新たなポートレットCの表示内容とを結合し、更新されたポータルページを生成する(ステップS71)。
そして、ポータルページ表示部33は、ポータルページを表示する(ステップS72)。
以上で、ポータルシステム2の動作の具体例の説明を終了する。
以上のように動作するポータルシステム2により、クライアント装置30に表示されるポータルページの具体例を、図14および図15に示す。
まず、図14を用いて、ポートレットA、ポートレットB、ポートレットCが配置されたユーザAのポータルページについて説明を行う。
図14において、ポートレットAは、天気予報サーバから取得する天気予報情報を表示するポートレットである。ポートレットAは、全てのユーザに対してアクセスが許可されている。ポータルサーバ20のポートレット差分情報記憶部23は、ポートレットAに関するポートレットキャッシュデータおよびポートレット差分データに、全てのユーザIDを含むグループIDを対応付けて記憶している。
ポートレットBは、ユーザIDで特定されるユーザの新着メール件数をメールサーバから取得して表示するポートレットである。ポータルサーバ20のポートレット表示内容生成部11は、ポートレットBの表示内容を、ユーザIDを用いて生成する。そして、ポートレット差分情報記憶部23は、ユーザID毎に生成されたポートレットBのポートレットキャッシュデータおよびポートレット差分データを、ユーザIDに応付けて記憶している。
ポートレットCは、グループIDで特定されるグループ向けのスケジュール一覧をスケジュール管理サーバから取得して表示するポートレットである。ポータルサーバ20のポートレット表示内容生成部11は、ポートレットCの表示内容を、グループIDを用いて生成する。そして、ポートレット差分情報記憶部23は、グループID毎に生成されたポートレットCのポートレットキャッシュデータおよびポートレット差分データを、グループIDに対応付けて記憶している。
このとき、図14(a)は、初回のリクエスト情報に応じて表示されたポータルページを示し、図14(b)は、再度のリクエスト情報に応じて再表示されたポータルページを示す。
ここでは、ポータルサーバ20は、初回のリクエスト情報の受信時に、ユーザAのレイアウトキャッシュデータおよびレイアウト差分データと、ポートレットA、B、Cのポートレットキャッシュデータおよびポートレット差分データとを含むレスポンス情報を、クライアント装置30に送信する。このとき、ポータルサーバ20は、ポートレットBおよびCに関しては、ユーザAおよびグループCに対応付けられたポートレットキャッシュデータおよびポートレット差分データを、レスポンス情報に含めるようにする。なお、ユーザAはグループCに属するものとする。これにより、クライアント装置30は、図14(a)に示すポータルページを表示する。
この状態で、クライアント装置30が再度のリクエスト情報を送信したとする。また、ポータルサーバ20のポートレット差分情報記憶部23は、前回のリクエスト情報の受信時以降に、ユーザAのポートレットBに関するポートレット差分データを新たに記憶しているものと想定する。ここでは、そのポートレット差分データは、新着メールの件数を表す表示要素を、2件から5件に更新するという内容を表すものである。したがって、ポータルサーバ20は、ユーザAのポートレットBに関するポートレット差分データをレスポンス情報に含めて、クライアント装置30に送信する。これにより、クライアント装置30は、図14(b)に示すポータルページを表示する。
このように、図14(a)から図14(b)のポータルページに更新するため、ポータルサーバ20は、クライアント装置30に対して、ポートレットBのポートレット差分データを送信するだけでよい。
また、図15(a)は、ユーザAのポータルページを示し、図15(b)は、ユーザBのポータルページを示している。ユーザBのポータルページには、ポートレットA、ポートレットD、ポートレットEが配置されるようレイアウト情報が設定されているものとする。
ポートレットDは、一般的なニュースサーバからニュース一覧を取得して表示するポートレットであり、全てのユーザに対してアクセスが許可されている。
ポートレットEは、他のポートレットであり、全てのユーザに対してアクセスが許可されている。
図15において、ユーザAの利用するクライアント装置30aは、初回のリクエスト情報をポータルサーバ20に送信する。そして、ポータルサーバ20は、ユーザAのレイアウトキャッシュデータおよびレイアウト差分データと、ポートレットA、B、Cのポートレットキャッシュデータおよびポートレット差分データとを含むレスポンス情報を、クライアント装置30aに送信する。これにより、クライアント装置30aは、図15(a)に示すポータルページを表示する。
また、近い時期に、ユーザBの利用するクライアント装置30bは、初回のリクエスト情報をポータルサーバ20に送信する。このとき、ポータルサーバ20のポートレット差分情報記憶部23は、ポートレットAに関して、クライアント装置30aに送信したものと同一のポートレットキャッシュデータおよびポートレット差分データを記憶していたとする。そこで、ポータルサーバ20は、ユーザBのレイアウトキャッシュデータおよびレイアウト差分データと、クライアント装置30aに送信したものと同一のポートレットAのポートレットキャッシュデータおよびポートレット差分データと、ポートレットD、Eのポートレットキャッシュデータおよびポートレと差分データとを含むレスポンス情報を、クライアント装置30bに送信する。これにより、クライアント装置30bは、図15(b)に示すポータルページを表示する。
このように、ポータルサーバ20は、クライアント装置30aおよび30bからの各リクエスト情報の受信に応じて、ポートレットAの表示内容を生成するためのコンテンツ提供元装置40との通信を重複して行う必要がない。
次に、本発明の第2の実施の形態の効果について説明する。
本発明の第2の実施の形態としてのポータルシステムは、アクセス権限が設定されたポートレットの配置されたポータルページをクライアント装置に提供する際の通信をより効率化することができる。
その理由は、ポートレット差分情報生成部が、ポートレット差分データおよびポートレットキャッシュデータを、そのポートレットに対するアクセス権限を有するユーザIDまたはグループIDに対応付けてポートレット差分情報記憶部に記憶させ、レスポンス情報生成部が、リクエスト情報が示すユーザIDまたはグループIDに対応付けられたポートレット差分データおよびポートレットキャッシュデータを用いて、レスポンス情報を生成するからである。
これにより、本実施の形態としてのポータルサーバは、ポートレットの効率的な送信を実現するためのポートレットキャッシュデータおよびポートレット差分データとして、アクセス権限に応じた適切なものを用いることが可能となる。
また、本発明の第2の実施の形態としてのポータルシステムは、ポートレットの配置されたポータルページを提供する際の通信をさらに効率化することができる。
その理由は、ポートレット差分情報生成部が、キャッシュ更新条件が満たされるときに新たなポートレットキャッシュデータを生成してポートレット差分情報記憶部に記憶させ、レスポンス情報生成部が、再度のリクエスト情報の受信時に、前回のリクエスト情報受信時以降に記憶されたポートレットキャッシュデータがあれば、そのポートレットキャッシュデータと、それ以降に記憶されたポートレット差分データをレスポンス情報に含めるからである。これにより、本実施の形態としてのポータルサーバは、ポートレットの効率的な送信を実現するためのポートレット差分データを、時間の経過に伴って肥大化させることがないからである。
さらなる理由は、レイアウト情報生成部が、設定情報の取得に応じてレイアウト情報を生成し、レイアウト差分情報生成部が、ある時点で生成されたレイアウト情報をレイアウトキャッシュデータとしてレイアウト情報記憶部に記憶させ、他の時点で生成されたレイアウト情報のレイアウトキャッシュデータに対する差分をレイアウト差分データとして生成してレイアウト情報記憶部に記憶させるからである。そして、レスポンス情報生成部が、再度のリクエスト情報の受信時には、前回のリクエスト情報の受信時以降にレイアウト情報に記憶されたレイアウト差分データをレスポンス情報に含めるからである。これにより、本実施の形態としてのポータルサーバは、レイアウト情報が更新された場合であっても、クライアント装置に対して送信するレスポンス情報に、前回送信時から更新されていない部分を多く含むレイアウト情報を含める必要がないからである。
なお、上述した本発明の各実施の形態において、ポータルページがHTML文書であり、ポートレットの表示内容がHTML情報である例を中心に説明したが、ポータルページおよびポートレットの表示内容は、HTML以外の言語によって記述されたものであってもよい。
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明したポータルサーバの動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置(記憶媒体)に格納しておき、係るコンピュータ・プログラムを当該CPUが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコード或いは記憶媒体によって構成される。
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
ポータルページに配置されるポートレットの表示内容を、コンテンツ提供元装置からコンテンツを取得することにより生成するポートレット表示内容生成部と、
前記ポートレット表示内容生成部によってある時点において生成された前記ポートレットの表示内容をポートレットキャッシュデータとして、前記ポートレット表示内容生成部によって他の時点において生成された表示内容の前記ポートレットキャッシュデータに対する差分を表すポートレット差分データを生成するポートレット差分情報生成部と、
前記ポートレットキャッシュデータおよび前記ポートレット差分データを記憶するポートレット差分情報記憶部と、
前記ポータルページに配置された前記ポートレットを表すレイアウト情報を記憶したレイアウト情報記憶部と、
クライアント装置から前記ポータルページを要求するリクエスト情報を受信するリクエスト情報受信部と、
前記リクエスト情報受信部によって前記リクエスト情報が受信されると、前記レイアウト情報記憶部に記憶された前記レイアウト情報と、該レイアウト情報の示す各ポートレットに関して前記ポートレット差分情報記憶部に記憶された前記ポートレットキャッシュデータおよび前記ポートレット差分データとを含むレスポンス情報を生成するとともに、前記リクエスト情報受信部によって前記クライアント装置から前記リクエスト情報が再度受信されると、該レイアウト情報の示す各ポートレットに関して前回のリクエスト情報受信時以降に前記ポートレット差分情報記憶部に記憶された前記ポートレット差分データを含むレスポンス情報を生成するレスポンス情報生成部と、
前記レスポンス情報を前記クライアント装置に送信するレスポンス情報送信部と、
を備えたポータルサーバ。
(付記2)
前記ポートレット差分情報記憶部は、前記ポートレットキャッシュデータおよび前記ポートレット差分データに、該当するポートレットに対するアクセス権限を有するユーザを識別するユーザIDを対応付けて記憶し、
前記レスポンス情報生成部は、前記レスポンス情報に含める前記ポートレットキャッシュデータおよび前記ポートレット差分データとして、前記リクエスト情報に含まれるユーザIDにそれぞれ対応付けられたものを用いることを特徴とする付記1に記載のポータルサーバ。
(付記3)
前記ポートレット差分情報記憶部は、前記ポートレットキャッシュデータおよび前記ポートレット差分データに、該当するポートレットに対するアクセス権限を有するユーザのグループを識別するグループIDを対応付けて記憶し、
前記レスポンス情報生成部は、前記レスポンス情報に含める前記ポートレットキャッシュデータおよび前記ポートレット差分データとして、前記リクエスト情報に含まれるユーザIDのユーザが属するグループのグループIDにそれぞれ対応付けられたものを用いることを特徴とする付記1または付記2に記載のポータルサーバ。
(付記4)
前記ポータルページに配置されるポートレットを設定する設定情報の取得に応じて前記レイアウト情報を生成するレイアウト情報生成部と、
ある時点において生成された前記レイアウト情報をレイアウトキャッシュデータとして、他の時点において生成された前記レイアウト情報の前記レイアウトキャッシュデータに対する差分を表すレイアウト差分データを生成するレイアウト差分情報生成部とをさらに備え、
前記レイアウト情報記憶部は、前記レイアウト情報として、前記レイアウトキャッシュデータおよび前記レイアウト差分データを記憶し、
前記レスポンス情報生成部は、前記リクエスト情報受信部によって前記リクエスト情報が受信されると、前記レスポンス情報に含める前記レイアウト情報として、前記レイアウト情報記憶部に記憶された前記レイアウトキャッシュデータおよび前記レイアウト差分データを含めるとともに、前記リクエスト情報受信部によって前記クライアント装置から前記リクエスト情報が再度受信されると、前記レスポンス情報に、前回のリクエスト情報受信時以降に前記レイアウト情報記憶部に記憶された前記レイアウト差分データをさらに含めることを特徴とする付記1から付記3のいずれか1つに記載のポータルサーバ。
(付記5)
前記レイアウト情報記憶部は、前記レイアウト情報に前記ユーザIDを対応付けて記憶し、
前記レスポンス情報生成部は、前記レスポンス情報に含める前記レイアウト情報として、前記リクエスト情報に含まれるユーザIDに対応付けられたものを用いることを特徴とする付記1から付記4のいずれか1つに記載のポータルサーバ。
(付記6)
前記ポートレット差分情報生成部は、前記コンテンツ提供元装置において前記コンテンツが更新された場合に、前記ポートレットキャッシュデータおよび前記ポートレット差分データのいずれかを生成して前記ポートレット差分情報記憶部に記憶させることを特徴とする付記1から付記5のいずれか1つに記載のポータルサーバ。
(付記7)
前記ポートレット差分情報生成部は、所定のポートレットキャッシュ更新条件が満たされた時点で前記ポートレット表示内容生成部によって生成された前記ポートレットの表示内容を、新たな前記ポートレットキャッシュデータとして前記ポートレット差分情報記憶部に記憶させることを特徴とする付記1から付記6のいずれか1つに記載のポータルサーバ。
(付記8)
前記ポートレット差分情報記憶部は、前記ポートレットキャッシュデータおよび前記ポートレット差分データの各データサイズをさらに記憶し、
前記ポートレット差分情報生成部は、前記ポートレットキャッシュデータのデータサイズおよび前記ポートレット差分データのデータサイズが所定の関係であることを前記ポートレットキャッシュ更新条件として、前記新たなポートレットキャッシュデータを前記ポートレット差分情報記憶部に記憶させることを特徴とする付記7に記載のポータルサーバ。
(付記9)
付記1から付記8のいずれか1つに記載のポータルサーバに前記ポータルページのリクエスト情報を送信するリクエスト情報送信部と、
前記ポータルサーバから前記レスポンス情報を受信するレスポンス情報受信部と、
前記レスポンス情報に基づいて前記ポータルページを表示するポータルページ表示部と、
前記ポータルページ表示部によって表示中の前記ポータルページから前記レイアウト情報および前記ポートレットの表示内容を抽出する表示中情報取得部と、
前記レスポンス情報受信部によって前記ポータルサーバから受信されたレスポンス情報に含まれる情報を結合することにより前記ポータルページの表示内容を生成して前記ポータルページ表示部に表示させるとともに、前記レスポンス情報受信部によって前記ポータルサーバから再度受信されたレスポンス情報に含まれる情報と、前記表示中情報取得部によって取得された情報とを結合することにより前記ポータルページの表示内容を生成して前記ポータルページ表示部に表示させる差分データ結合部と、
を備えたクライアント装置。
(付記10)
付記1から付記8のいずれか1つに記載のポータルサーバと、
付記9に記載のクライアント装置と、
を備えたポータルシステム。
(付記11)
ポータルページに配置されるポートレットを表すレイアウト情報を記憶しておき、
前記ポートレットの表示内容を、コンテンツ提供元装置からコンテンツを取得することにより生成し、生成した表示内容をポートレットキャッシュデータとして記憶し、
前記ポートレットの表示内容を再度生成し、生成した表示内容の前記ポートレットキャッシュデータに対する差分を表すポートレット差分データを記憶し、
クライアント装置から前記ポータルページを要求するリクエスト情報を受信すると、
前記ポータルページの前記レイアウト情報と、前記レイアウト情報が示す各ポートレットに関する前記ポートレットキャッシュデータおよび前記ポートレット差分データとを含むレスポンス情報を生成し、
前記レスポンス情報を前記クライアント装置に送信し、
前記クライアント装置から前記ポータルページを要求するリクエスト情報を再度受信すると、
前回のリクエスト情報受信時以降に記憶した前記ポートレット差分データを含むレスポンス情報を生成し、
前記レスポンス情報を前記クライアント装置に送信する、情報処理方法。
(付記12)
ポータルページに配置されるポートレットを表すレイアウト情報を記憶したレイアウト情報記憶部を用いて、
前記ポートレットの表示内容を、コンテンツ提供元装置からコンテンツを取得することにより生成し、生成した表示内容をポートレットキャッシュデータとしてポートレット差分情報記憶部に記憶させるポートレットキャッシュデータ記憶ステップと、
前記ポートレットの表示内容を再度生成し、生成した表示内容の前記ポートレットキャッシュデータに対する差分を表すポートレット差分データを前記ポートレット差分情報記憶部に記憶させるポートレット差分データ記憶ステップと、
クライアント装置から前記ポータルページを要求するリクエスト情報を受信するリクエスト情報受信ステップと、
前記リクエスト情報受信ステップで要求されたポータルページに関して前記レイアウト情報記憶部に記憶された前記レイアウト情報と、前記レイアウト情報が示す各ポートレットに関する前記ポートレットキャッシュデータおよび前記ポートレット差分データとを含むレスポンス情報を生成するレスポンス情報生成ステップと、
前記レスポンス情報を前記クライアント装置に送信するレスポンス情報送信ステップと、
前記クライアント装置から前記ポータルページを要求するリクエスト情報を再度受信するリクエスト情報再受信ステップと、
前回のリクエスト情報受信時以降に記憶した前記ポートレット差分データを含むレスポンス情報を生成するレスポンス情報再生成ステップと、
前記レスポンス情報再生成ステップで生成されたレスポンス情報を前記クライアント装置に送信するレスポンス情報再送信ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
(付記13)
ポータルサーバは、
ポータルページに配置されるポートレットを表すレイアウト情報を記憶しておき、
前記ポートレットの表示内容を、コンテンツ提供元装置からコンテンツを取得することにより生成してポートレットキャッシュデータとして記憶し、
前記ポートレットの表示内容を再度生成し、生成した表示内容の前記ポートレットキャッシュデータに対する差分を表すポートレット差分データを記憶し、
クライアント装置は、
前記ポータルページを要求するリクエスト情報を前記ポータルサーバに送信し、
前記ポータルサーバは、
前記ポータルページの前記レイアウト情報と、前記レイアウト情報が示す各ポートレットに関する前記ポートレットキャッシュデータおよび前記ポートレット差分データとを含むレスポンス情報を生成し、
前記レスポンス情報を前記クライアント装置に送信し、
前記クライアント装置は、
前記レスポンス情報に基づいて前記ポータルページを表示し、
前記ポータルページを要求するリクエスト情報を前記ポータルサーバに再度送信し、
前記ポータルサーバは、
前回のリクエスト情報受信時以降に記憶した前記ポートレット差分データを含むレスポンス情報を生成し、
前記レスポンス情報を前記クライアント装置に送信し、
前記クライアント装置は、
表示中のポータルページから前記レイアウト情報および前記ポートレットの表示内容を抽出し、
抽出した前記レイアウト情報および前記ポートレットの表示内容と、受信したレスポンス情報とを結合することにより、新たなポータルページを表示する、情報処理方法。
(付記14)
付記12に記載のコンピュータ・プログラムを実行するポータルサーバに対して前記ポータルページのリクエスト情報を送信するリクエスト情報送信ステップと、
前記ポータルサーバから前記レスポンス情報を受信するレスポンス情報受信ステップと、
前記レスポンス情報に基づいて前記ポータルページを表示するポータルページ表示ステップと、
前記ポータルサーバに対して前記ポータルページのリクエスト情報を再度送信するリクエスト情報再送信ステップと、
前記ポータルサーバから前記レスポンス情報を再度受信するレスポンス情報再受信ステップと、
前記ポータルページ表示ステップによって表示中のポータルページからレイアウト情報および前記ポートレットの表示内容を抽出する表示中情報取得ステップと、
前記レスポンス情報再受信ステップで前記ポータルサーバから再度受信されたレスポンス情報と、前記表示中情報取得ステップで取得された前記レイアウト情報および前記ポートレットの表示内容とを結合することにより新たなポータルページを生成する差分データ結合ステップと、
前記差分データ結合ステップによって生成された新たなポータルページを表示するポータルページ再表示ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。