以下図面により本発明の実施の形態について説明する。
図1は、本発明の実施形態に係るSBC(Server Based Computing)システムの構成を示すブロック図である。
このSBCシステムは、有線または無線のLAN(Local Area Network)やWAN(Wide Area Network)からなるネットワークN上に接続されたサーバ装置10および複数のクライアント装置(Thin client)20,…を備える。
サーバ装置10は、テキスト作成処理プログラム,Webブラウザプログラム,表計算処理プログラム,メール処理プログラムなど、複数のアプリケーションプログラムを有し、当該サーバ装置10に接続されたクライアント装置20,…からの操作入力(入力イベント)信号に応じて起動しその処理を実行する。
このサーバ装置10において、クライアント装置20,…からの操作入力信号に応じたアプリケーションプログラムの実行に伴い、クライアント用のフレームバッファRAM14a(図2参照)上に生成された表示出力用の描画データGは、イメージ送信やコマンド送信を組み合わせてアクセス元のクライアント装置20,…へ転送される。
そして、クライアント装置20,…では、前記サーバ装置10から転送された描画データGがフレームバッファRAM25(図3参照)に展開され、表示装置26の表示画面に表示される。
つまり、このSBCシステムにおける各クライアント装置(Thin client)20,…は、何れもキーボードやマウスなどのユーザ操作に応じた入力機能とLCD表示部及びプリンタなどへの出力機能を主要な機能として有し、少なくとも前記サーバ装置10が有している各種のアプリケーション機能やデータファイルの管理機能を一切持っていない。
そして、クライアント装置20,…からの操作入力(入力イベント)信号に応じてサーバ装置10にて起動実行される各種の処理に伴い生成されたデータファイルは、基本的には、当該サーバ装置10内あるいは該サーバ装置10にて接続管理される磁気ディスクなどの記憶装置にユーザアカウント毎あるいは共有ファイルとして記憶され保存される。
図2は、前記SBCシステムにおけるサーバ装置10の回路構成を示すブロック図である。
サーバ装置10は、コンピュータとしてのCPU11を備え、このCPU11には、バス12を介してROM13、RAM14、フレームバッファRAM15、表示装置16が接続される。
また、CPU11には、バス12を介してキーボード,マウスなどの入力装置17、外部記憶装置18、クライアント装置20,…との通信I/F(インターフェイス)19が接続される。
CPU11は、ROM13のプログラムメモリ13aに予め記憶されているシステムプログラムや種々のアプリケーションプログラムに従ってRAM14を作業用メモリとし回路各部の動作を制御するもので、入力装置17からのキー入力信号や通信I/F19を介して受信されるクライアント装置20からのユーザ操作に応じた処理指令(入力イベント)信号などに応じて前記種々のプログラムが起動・実行される。
このサーバ装置10において、クライアント装置20からの入力イベント信号に応じて起動・実行されるアプリケーションプログラムに従い生成された種々のデータは、例えばそのユーザIDに対応付けられて外部記憶装置18に記憶される。またクライアント表示用の描画データGは、RAM14内のクライアント用フレームバッファRAM14aを使用して生成されると共に、通信I/F19からクライアント装置20へ転送されて表示出力される。
また、RAM14内には、先読みキャッシュメモリ14Xが備えられる。この先読みキャッシュメモリ14Xには、クライアント装置20からの入力イベント信号に応じて実行されるアプリケーションプログラムに従い、クライアント装置20の表示画面(26)に表示させるべき描画データGがクライアント用フレームバッファRAM14aに生成されるのに伴い、当該描画データGに連続して表示画面外となる領域も含む全てのデータがキャッシュデータとして記憶される。例えばクライアント装置20からの入力イベントがWebページHPの表示を要求するイベントである場合に、これに応答してサーバ装置10のWebブラウザプログラムにより取得されたWebページHPの全体データから、クライアント装置20の表示画面(26)に合わせた描画データGが生成されてクライアント用フレームバッファRAM14aに記憶されると共に(図6(A)参照)、当該WebページHPの全体データ(図6(B)参照)がキャッシュデータCDとして先読みキャッシュメモリ14Xに記憶される。
この先読みキャッシュメモリ14Xに記憶されたキャッシュデータCDは、前記クライアント用フレームバッファRAM14aに生成された描画データGの転送処理とは別に設定された適切なタイミングでクライアント装置20へ転送され、その先読みキャッシュメモリ24a(図3参照)に記憶される。
なお、前記クライアント用フレームバッファRAM14aに生成された描画データGが、前記先読みキャッシュメモリ24aに既に送信済みとして記憶されているキャッシュデータと同じである場合には、当該キャッシュデータに対応付けられたキャッシュIDだけがクライアント装置20へ送信される。
一方、サーバ装置10自身の表示装置16にて表示させるための描画データは、フレームバッファRAM15上に生成される。
図3は、前記SBCシステムにおけるクライアント装置20の回路構成を示すブロック図である。
クライアント装置20は、コンピュータとしてのCPU21を備え、このCPU21には、バス22を介してROM23、RAM24、フレームバッファRAM25が接続される。そして、このフレームバッファRAM25に書き込まれた描画データG(図6(A)参照)が、表示装置26の表示画面に表示される。
また、CPU21には、バス22を介して入力装置27、外部記憶装置28、前記サーバ装置10との通信I/F(インターフェイス)29が接続される。
CPU21は、ROM23のプログラムメモリ23aに予め記憶されているシステムプログラムに従ってRAM24を作業用メモリとし回路各部の動作を制御するもので、入力装置27からのキー入力信号、通信I/F29を介して受信されるサーバ装置10からのアプリケーション応答信号や転送描画データG、キャッシュデータCDなどに応じて前記システムプログラムが起動され実行される。
このクライアント装置20において、前記サーバ装置10におけるアプリケーションプログラムを実行させて生成した種々のデータは、適宜、外部記憶装置28に読み込ませて記憶させ、また生成転送された表示用の描画データGは、フレームバッファRAM25に展開され表示装置26で表示出力される。
なお、前記サーバ装置10の先読みキャッシュメモリ14Xから読み出されてクライアント装置20へ転送されるWebページHPなどのキャッシュデータは、先読みキャッシュメモリ24aに記憶される。そして、クライアント装置20からの入力イベントに応答して前記サーバ装置10aからキャッシュIDが受信された場合には、当該キャッシュIDに対応付けられたキャッシュデータが前記先読みキャッシュメモリ24aから読み出され、前記フレームバッファRAM29に展開されて表示出力される。
図4は、前記サーバ装置10とクライアント装置20におけるソフトウエア・モジュールの構成を示す図である。
サーバ装置10のプログラムメモリ13aに記憶されるサーバ制御プログラムは、RTT(Round Trip Time)測定モジュール13a1、画面制御モジュール13a2、通信モジュール13a3を有する。
RTT測定モジュール13a1は、ネットワークNにおけるクライアント装置20との間での伝送遅延の度合いを測定し、この測定結果を画面制御モジュール13a2に通知する機能を有する。
画面制御モジュール13a2は、クライアント装置20からの入力イベントに応じたアプリケーションプログラムを起動させて当該クライアント装置20の表示画面(26)に表示させるべき描画データGをクライアント用フレームバッファRAM14a上に生成する(図6(A)参照)。また、前記クライアント表示用の描画データGの生成に伴い、当該描画データGに連続する一連の描画データ(例えば図6(B)で示すように、WebページHPへのアクセスイベントが発生した場合にはそのページ全体のデータ(HP))を取得し、先読みキャッシュメモリ14XにキャッシュデータCDとして記憶する。そして、先読みキャッシュメモリ14Xに記憶されたキャッシュデータCDを、画面スクロールの可能性が高い順の3つの領域[Level-1/Level-2/Level-3)(図10参照)に分け、前記一連の描画データの取得開始直後(WebページHPのロード開始直後)の第1のタイミングと、前記一連の描画データの取得終了直後(WebページHPのロード終了直後)の第2のタイミングと、クライアント装置20からの入力イベントの状況や前記RTT測定モジュール13a1から通知された伝送遅延の測定結果および前記描画データGのクライアント装置20への転送待ち状況に応じた第3のタイミングとにより、前記クライアント装置20へ送信する。さらに、前記クライアント表示用の描画データGの生成に伴い、当該描画データGと一致するキャッシュデータが先読みキャッシュメモリ14Xに存在した場合に、そのキャッシュIDを送信するための送信スケジュールの制御機能を有する。
通信モジュール13a3は、クライアント装置20から受け取った入力イベントデータやRTT測定のためのデータを、画面制御モジュール13a2やRTT測定モジュール13a1に引き渡す機能、およびRTT測定モジュール13a1から受け取ったRTT測定のためのデータや、画面制御モジュール13a2から受け取った描画データGやキャッシュデータCD、キャッシュIDを、クライアント装置20へ送信する機能を有する。
一方、クライアント装置20のプログラムメモリ23aに記憶されるクライアント制御プログラムは、通信モジュール23a1、入力モジュール23a2、画面表示モジュール23a3を有する。
通信モジュール23a1は、サーバ装置10との間でRTT測定のためのデータを受信/送信する機能、および入力モジュール23a2から受け取った入力イベントデータをサーバ装置10へ送信し、サーバ装置10から受信された表示用の描画データGやキャッシュデータCD、キャッシュIDを、画面表示モジュール23a3に引き渡す機能を有する。
入力モジュール23a2は、ユーザ操作に応じた入力イベントデータを通信モジュール23a1に引き渡す機能を有する。
画面表示モジュール23a3は、通信モジュール23a1から受け取った表示用の描画データGをフレームバッファRAM25に展開して表示装置26に表示させる機能を有する(図6(A)参照)。また、通信モジュール23a1から受け取ったキャッシュデータCDを先読みキャッシュメモリ24aに記憶させる機能を有する。さらに、同通信モジュール23a1から受け取ったキャッシュIDに対応するキャッシュデータCDを、前記先読みキャッシュメモリ24aから読み出して前記フレームバッファRAM25に展開し、表示装置26に表示させる機能を有する。
図5は、前記サーバ装置10のRAM14に用意される主要なデータメモリを示す図である。
RAM14には、前記クライアント用フレームバッファRAM14aの他に、RTTメモリ14b、画面送信FIFOメモリ14c、先読みキャッシュメモリ14X(先読みキャッシュFIFOメモリ14d/キャッシュ状態管理バッファ14e/キャッシュ送信タイミングレベルメモリ14f)、入力イベントタイムスタンプメモリ14gなどが用意される。
RTTメモリ14bには、前記RTT測定モジュール13a1によるRTT測定機能により測定されたクライアント装置20との間での伝送遅延時間tが記憶される。
画面送信FIFOメモリ14c(図11(C)参照)には、クライアント用フレームバッファRAM14aにて生成された描画データG(図6(A)参照)が、クライアント装置20へ転送されるデータとしてバッファリングされるもので、この際、前回の描画データG(n-1)との比較により更新された部分を含む矩形領域のデータだけが、例えば当該描画データGを生成したアプリケーションにより設定される画面スクロールの幅Ds(図7参照)の単位で記憶される。
先読みキャッシュFIFOメモリ14d(図11(A)・図12参照)には、前記クライアント用フレームバッファRAM14aに対する描画データG(図6(A)・図7参照)の生成に伴い、当該描画データGに連続する一連のデータ(例えばアクセス対象WebページHPの全体のデータ)がキャッシュデータCDとしてバッファリングされるもので、この際、前記画面送信FIFOメモリ14cと同様に、例えば前記描画データGを生成したアプリケーション(例えばWebブラウザ)により設定される画面スクロールの幅Ds(図7参照)の単位で記憶される。そして、この画面スクロールの幅Ds単位でのキャッシュデータとしては、そのデータ本体と共に、データサイズ(幅×高さ)、URL−ID、キャッシュID、転送優先順位のレベルを示すフラグ(Level-1 or 2 or 3)、データ圧縮方式(0:JPEG/1:PNG/…)が付加されて記憶される(図12参照)。
キャッシュ状態管理バッファ14e(図11(B)・図13参照)には、前記先読みキャッシュFIFOメモリ14d(図12参照)に記憶された画面スクロールの幅Ds単位での各キャッシュデータについての状態情報(データ固有のハッシュ値/キャッシュID/未送信:0 or 送信済:1)Jdsが記憶される。
キャッシュ送信タイミングレベルメモリ14fには、前記先読みキャッシュFIFOメモリ14dに記憶されたキャッシュデータをクライアント装置20へ転送するタイミングを判定するための現在のレベルが、前記キャッシュデータの取得開始直後(Webページのロード開始直後)は[Level-1]、キャッシュデータの取得終了直後(Webページのロード終了直後)は[Level-2]、クライアント装置20からの入力イベントから一定時間以上経過し且つ前記RTT測定モジュール13a1から通知された伝送遅延の測定結果が閾値以下で且つ前記画面送信FIFOメモリ14cにおける描画データGのクライアント装置20への転送待ち予約数(Ds単位)が閾値以下の場合に[Level-3]としてセットされる。
入力イベントタイムスタンプメモリ14gには、クライアント装置20からの入力イベントに伴い取得されたタイムスタンプのデータが、当該入力イベント毎に更新されて記憶される。
図6は、前記サーバ装置10のクライアント用フレームバッファ14a上に生成されるWebページHPの描画データGと、当該描画データGの生成に伴い取得されるキャッシュデータCDとの関係を示す図である。
図7は、前記サーバ装置10のアプリケーション(Webブラウザ)により取得されるWebページHPの領域に対する描画データGの領域とスクロールの幅(移動量)Dsとの関係を示す図である。
図8は、前記サーバ装置10のアプリケーション(Webブラウザ)により取得されるWebページHPの送信フォーマットFhpを示す図である。
図9は、前記サーバ装置10のアプリケーション(Webブラウザ)により取得されるWebページHPの終了フォーマットFhpeを示す図である。
例えばクライアント装置20からの入力イベントがWebページHPへのアクセス要求である場合、サーバ装置10のアプリケーション(Webブラウザ)が起動され、ユーザ指定のURLに対応するWebページHPのデータが、図8,図9のフォーマットFhp,Fhpeに従い取得される。
この際、クライアント装置20の表示画面サイズ(26)に合わせたクライアント用フレームバッファRAM14a上に前記WebページHPの先頭からのデータを書き込んだ描画データGが生成され、また、当該WebページHPの全体のデータがキャッシュデータCDとして先読みキャッシュメモリ14Xに書き込まれる。
前記先読みキャッシュメモリ14Xに書き込まれるWebページHPのデータは、その送信フォーマットFhpに記述される「スクロールのピクセル値」に従ったスクロールの幅(移動量)Dsのデータ単位で管理される。
図10は、前記サーバ装置10のアプリケーション(Webブラウザ)により取得されるWebページHPに対してそのスクロールの幅(移動量)Dsの単位で予め設定されたキャッシュデータCDとしてのクライアント装置20への転送優先順位を示す図である。
クライアント装置20からの入力イベント(Webページアクセス要求)に応じてクライアント用フレームバッファRAM14aに生成される描画データGが、アクセス対象であるWebページHPの先頭からクライアント装置20の表示画面サイズに合わせて生成されると共に、当該WebページHPの全体のデータがキャッシュデータCDとして先読みキャッシュメモリ14Xに記憶された場合、前記描画データGの直下に続く画面スクロールの可能性が最も高いスクロール幅(移動量)Dsのn倍の領域[Ds×n]が第1優先の転送レベル[Level-1]に設定される。続いて、前記第1優先の転送レベル[Level-1]に設定されたWebページHPの領域[Ds×n]の次に画面スクロールの可能性が高いスクロール幅(移動量)Dsのm倍の領域[Ds×m]が第2優先の転送レベル[Level-2]に設定される。そして、前記第2優先の転送レベル[Level-2]に設定されたWebページHPの領域[Ds×m]に続く当該WebページHPの下端までの領域および前記描画データGに対応する領域が、何れも第3優先の転送レベル[Level-3]に設定される。
図11は、前記サーバ装置10の先読みキャッシュメモリ14Xにおける先読みキャッシュFIFOメモリ14dとキャッシュ状態管理バッファ14eおよび画面送信FIFOメモリ14cを示す図である。
図12は、前記サーバ装置10の先読みキャッシュFIFOメモリ14dに記憶されるキャッシュデータの内容を示す図である。
図13は、前記サーバ装置10のキャッシュ状態管理バッファ14eに記憶されるキャッシュ状態情報の内容を示す図である。
先読みキャッシュFIFOメモリ14dには、前述した通り、クライアント用フレームバッファRAM14aに対する描画データGの生成に伴い、当該描画データGに連続する一連のデータ(例えばアクセス対象WebページHPの全体のデータ)がキャッシュデータCDとして、画面スクロールの幅Ds単位で、そのデータ本体と共に、データサイズ(幅×高さ)、URL−ID、キャッシュID、転送優先順位のレベルを示すフラグ(Level-1 or 2 or 3)、データ圧縮方式(0:JPEG or 1:PNG or …)が付加されて記憶される。
キャッシュ状態管理バッファ14eには、前述した通り、前記先読みキャッシュFIFOメモリ14dに記憶された画面スクロールの幅Ds単位での各キャッシュデータについての状態情報(データ固有のハッシュ値/キャッシュID/0:未送信 or 1:送信済)Jdsが記憶される。
なお、先読みキャッシュメモリ14Xには、アクセス対象となったWebページHPのURL毎に当該URLに対応付けられたページHPの全体のデータがキャッシュデータCDとして記憶されている。そして、前記キャッシュ状態管理バッファ14eには、前記アクセス対象となったWebページHPのURL毎に、そのキャッシュデータCDについての状態情報Jdsが記憶される。
つまり、前記キャッシュ送信タイミングレベルメモリ14fにセットされたキャッシュデータCDを転送するタイミングの判定レベルが[Level-1](Webページのロード開始直後)のときには、前記先読みキャッシュFIFOメモリ14dにおいて、第1優先の転送レベルを示すフラグ[Level-1]が付加されているところのキャッシュデータがクライアント装置20へ転送され、[Level-2](Webページのロード終了直後)のときには、第2優先の転送レベルを示すフラグ[Level-2]が付加されているところのキャッシュデータが転送され、[Level-3](クライアント装置20からの入力イベントから一定時間以上経過し且つRTT測定モジュール13a1から通知された伝送遅延の測定結果が閾値以下で且つ画面送信FIFOメモリ14cにおける描画データGのクライアント装置20への転送待ち予約数が閾値以下)のときには、第3優先の転送レベルを示すフラグ[Level-3]が付加されているところのキャッシュデータが転送される。
なお、前記WebページHPをキャッシュデータCDとして前記先読みキャッシュメモリ14Xに記憶させる場合に、当該WebページHPのURLに対応付けられたキャッシュ状態情報が前記キャッシュ状態管理バッファ14eに既に記憶されている場合には、ハッシュ値が異なるところの状態情報Jdsに対応したスクロール幅Ds単位でのページデータだけ書き替えられて記憶される。
また、クライアント装置20からの入力イベントに応じて生成された描画データGを当該クライアント装置20へ転送する場合に、転送対象となった描画データGとハッシュ値が同じで且つ送信済み“1”の状態情報Jdsに対応付けられたキャッシュデータCD(Ds単位)が存在する部分については、そのキャッシュIDだけがクライアント装置20へ送信され、そうでない部分は実データが送信される。
次に、前記構成のSBCシステムの動作について説明する。
図14は、前記SBCシステムのサーバ装置10が実行するキャッシュ取得送信処理とスクロール対応送信処理の概要を示すフローチャートである。
図15は、前記サーバ装置10のキャッシュ取得送信処理に含まれるキャッシュデータCDの取得(b)および管理/送信(c)の詳細処理を示すフローチャートである。
図16は、前記図15におけるステップc2〜c4の詳細処理を示すフローチャートある。
クライアント装置20からの入力イベントがWebページHPへのアクセス要求である場合に、プログラムメモリ13aに記憶されている当該入力イベントに応じたアプリケーションプログラム(Webブラウザプログラム)が起動され、要求されたWebサイトのWebページHPがロードされる(ステップa)。
すると、ロードされたWebページHPの先頭からクライアント装置20の表示画面サイズに合わせた部分のデータが、描画データGとしてクライアント用フレームバッファRAM14a上に生成される(図7参照)。これと共に、前記図8で示した送信フォーマットFhpに従い受信されたWebページHPの全体データが、キャッシュデータCDとして取得される(ステップb)。
この際、前記クライアント用フレームバッファRAM14a上に生成された描画データGは、画面送信FIFOメモリ14cにスクロール幅Ds単位で書き込まれ(図11(C)参照)、前記イベント入力元のクライアント装置20へ順次送信される。
前記Webブラウザから取得されたWebページHPの全体データ(キャッシュデータCD)は、先ずスクロール幅Ds単位で分割される(図7参照)(ステップc1)。
スクロール幅Ds単位で分割されたキャッシュデータCDは、それぞれそのデータの内容に対応したハッシュ値が計算され(ステップc21)、未送信“0”の状態に初期化され(ステップc22)、キャッシュIDが発行される(ステップc23)。
すると、キャッシュ状態管理バッファ14e(図13参照)において、前記Webブラウザから取得されたWebページHP(キャッシュデータCD)のURLに対応付けられたデータ領域が既に作成されているか否か判断される(ステップc31)。
ここで、前記クライアント装置20からの入力イベントが新規のWebサイトへのアクセス要求であることで、前記キャッシュ状態管理バッファ14eにおいて、今回取得されたWebページHP(キャッシュデータCD)のURLに対応付けられた管理バッファのデータ領域は作成されていないと判断されると(ステップc31(NO))、図13に示すように、当該URLに対応付けた管理バッファのデータ領域が作成される(ステップc32)。
そして、前記作成された管理バッファ(14e)のデータ領域に対し、前記ステップc21〜c23にて得られたスクロール幅Ds単位のキャッシュデータ毎の状態情報(ハッシュ値/キャッシュID/送信状態:0)Jdsが格納されると共に、当該スクロール幅Ds単位のキャッシュデータが、図12に示すように、先読みキャッシュFIFOメモリ14dに格納される(ステップc4)。
一方、前記キャッシュ状態管理バッファ14eにおいて、今回取得されたWebページHP(キャッシュデータCD)のURLに対応付けられたデータ領域が既に作成されていると判断された場合は(ステップc31(YES))、当該管理バッファのデータ領域に記憶されている状態情報Jdsに基づき、同じハッシュ値を有するスクロール幅Ds単位のキャッシュデータが判断される(ステップc33)。
ここで、同じハッシュ値と判断されたスクロール幅Ds単位のキャッシュデータについては、その状態情報Jdsも含めて、前記キャッシュ状態管理バッファ14eおよび先読みキャッシュFIFOメモリ14dへの書き込みは行われない(ステップc33(YES))。そして、ハッシュ値が異なる、つまりデータの内容が更新されたと判断されたスクロール幅Ds単位のキャッシュデータについてのみ(ステップc33(NO))、前記キャッシュ状態管理バッファ14eおよび先読みキャッシュFIFOメモリ14dへの書き換えによる格納処理が実行される(ステップc4)。
これにより、クライアント装置20からの入力イベント(WebページHPへのアクセス要求)に応じて取得されたWebページHPの全体データがキャッシュデータCDとして、スクロール幅Ds単位に分割された形態で先読みキャッシュFIFOメモリ14d(図12参照)に記憶されると共に、当該スクロール幅Ds単位のキャッシュデータそれぞれの状態情報(ハッシュ値/キャッシュID/送信状態)Jdsがキャッシュ状態管理バッファ14eに記憶される。
図17は、前記SBCシステムのサーバ装置10が実行する入力イベント記録処理とキャッシュ送信タイミング[Level-3]判定処理を示すフローチャートである。
このサーバ装置10における入力イベント記録処理とキャッシュ送信タイミング[Level-3]判定処理は、常時起動実行される。
図17(A)で示す入力イベント記録処理では、クライアント装置20からそのキー操作やマウス操作に応じた入力イベントが受信される毎に(ステップR1)、当該入力イベントのシリアル番号とタイムスタンプとが対応付けられて入力イベントタイムスタンプメモリ14gに記録される(ステップR2)。
図17(B)で示すキャッシュ送信タイミング[Level-3]判定処理では、例えばn秒毎にタイムアップするタイマハンドラが起動されると(ステップS1)、現在のタイムスタンプが取得され(ステップS2)、前記入力イベントタイムスタンプメモリ14gに記録された最新の入力イベントのタイムスタンプから一定期間以上の時間が経過しているか否か、つまりクライアント装置20からの入力イベントがあったばかりでなく、サーバ装置10側での負荷が重くない状態であるか否か判断される(ステップS3)。
現在のタイムスタンプが、最新の入力イベントのタイムスタンプから一定期間以上経過していると判断されると(ステップS3(YES))、次に、RTTメモリ14bに記憶されているクライアント装置20との間での伝送遅延時間tが取得され(ステップS4)、当該伝送遅延時間tが閾値以下か否か、つまりクライアント装置20に対する通信状態が良好な状態にあるか否か判断される(ステップS5)。
ここで、クライアント装置20との間での伝送遅延時間tが閾値以下であると判断されると(ステップS5(YES))、画面送信FIFOメモリ14c(図11(C)参照)にて未転送で記憶されているスクロール幅Ds単位でのクライアント用描画データGの画面転送予約数が取得され(ステップS6)、当該画面転送予約数が閾値以下か否か、つまり前記入力イベントに応じて生成されたクライアント用描画データGのクライアント装置20への転送待ちが少ない状態にあるか否か判断される(ステップS7)。
そして、クライアント用描画データGの画面転送予約数が閾値以下であると判断されると(ステップS7(YES))、現在のキャッシュ送信タイミングが第3優先の転送レベル[Level-3]と判定され、当該転送レベル[Level-3]がキャッシュ送信タイミングレベルメモリ14fに記憶される(ステップS8)。
すると、タイマがセットされ、再びタイマハンドラの起動の待機状態になる(ステップS9→S1)。
一方、現在のタイムスタンプが、最新の入力イベントのタイムスタンプから一定期間以上経過していない、つまり、クライアント装置20からの入力イベントがあったばかりで、サーバ装置10側での負荷が重い状態であると判断された場合(ステップS3(NO))、またはクライアント装置20との間での伝送遅延時間tが閾値以下ではない、つまり、クライアント装置20に対する通信状態が良好な状態にないと判断された場合(ステップS5(NO))、または画面送信FIFOメモリ14cにて未転送で記憶されているクライアント用描画データGの画面転送予約数が閾値以下でない、つまり、クライアント用描画データGのクライアント装置20への転送待ちが少ない状態にないと判断された場合には(ステップS7(NO))、前記転送レベル[Level-3]との判定はされずにタイマがセットされ、再びタイマハンドラの起動の待機状態になる(ステップS9→S1)。
図18は、前記図15および図16のフローチャートに従い実行されたキャッシュデータの取得処理およびその先読みキャッシュFIFOメモリ14dへの格納処理に引き続き実行されるキャッシュデータの送信処理を示すフローチャートである。
図19は、前記図18におけるキャッシュデータ送信処理に伴うキャッシュデータの送信フォーマットTdsを示す図である。
前記先読みキャッシュFIFOメモリ14d(図12参照)において、キャッシュデータ(例えばスクロール幅Ds単位で分割されたWebページHPのデータ)の格納が確認されると(ステップc5)、当該格納されたスクロール幅Ds単位でのキャッシュデータについて、その転送優先順位のレベルを示すフラグ(Level-1 or 2 or 3)が読み出され、キャッシュ送信タイミングレベルメモリ14fに記憶されている現在の送信タイミングレベルと一致するか否か判断される(ステップc6)。
前記先読みキャッシュFIFOメモリ14dにて確認されたキャッシュデータの転送優先順位のレベルを示すフラグ(Level-1 or 2 or 3)が、現在の送信タイミングレベルと一致すると判断されると(ステップc6(YES))、当該キャッシュデータは、予め設定された圧縮方式に従いデータ圧縮され(ステップc7)、図19に示すような送信フォーマットTdsで前記イベント入力元のクライアント装置20へ送信される(ステップc8)。
そして、前記クライアント装置20へ送信されたキャッシュデータに対応付けられてキャッシュ状態管理バッファ14e(図13参照)に記憶されている未送信/送信の状態情報が、未送信済“0”から送信済“1”に書き替えられる(ステップc9)。
すなわち、先読みキャッシュFIFOメモリ14dにスクロール幅Ds単位に分割されて記憶されたキャッシュデータCD(WebページHPの全体データ)(図7・図10参照)について、当該キャッシュデータの取得開始直後(WebページHPのロード開始直後)で、キャッシュ送信タイミングレベルメモリ14fに[Level-1]のタイミングレベルがセットされると、クライアント表示用の描画データGの直下で画面スクロールの可能性が最も高い第1優先の転送レベル[Level-1]に設定された領域[Ds×n]のキャッシュデータが送信される。
また、キャッシュデータの取得終了直後(WebページHPのロード終了直後)で、キャッシュ送信タイミングレベルメモリ14fに[Level-2]のタイミングレベルがセットされると、画面スクロールの可能性が次に高い第2優先の転送レベル[Level-2]に設定された領域[Ds×m]のキャッシュデータが送信される。
さらに、クライアント装置20からの入力イベントから一定時間以上経過し且つ前記RTT測定モジュール13a1から通知された伝送遅延の測定結果が閾値以下で且つ前記画面送信FIFOメモリ14cにおける描画データGのクライアント装置20への転送待ち予約数(Ds単位)が閾値以下であると判断された、サーバ装置10の負荷が軽い場合に、キャッシュ送信タイミングレベルメモリ14fに[Level-3]のタイミングレベルがセットされると、第3優先の転送レベル[Level-3]に設定された前記WebページHPの下端までの領域および前記描画データGに対応する領域のキャッシュデータが送信される。
これにより、クライアント装置20からの入力イベント(WebページHPへのアクセス要求)に応じたアプリケーションプログラム(Webブラウザ)の起動により、ユーザ所望のWebサイト(URL)からロードされたWebページHPのデータに基づき、クライアント表示用の描画データGが生成されてクライアント装置20へ転送される。これと共に、前記WebページHPの全体データがキャッシュデータCDとして取得され、当該キャッシュデータCD(図7・図10参照)は、前記描画データGの直下で画面スクロール先となる可能性が最も高い領域[Ds×n]が第1優先の転送レベル[Level-1]に設定され、WebページHPのロード開始直後のタイミングでクライアント装置20へ送信される。また、画面スクロール先となる可能性が次に高いWebページHPの下端までの領域[Ds×m]が第2優先の転送レベル[Level-2]に設定され、WebページHPのロード終了直後のタイミングでクライアント装置20へ送信される。そして、前記WebページHPの未送信の残りの領域が第3優先の転送レベル[Level-3]に設定され、サーバ装置10の負荷の軽いタイミングでクライアント装置20へ送信される。
このため、前記サーバ装置10により取得されたキャッシュデータCDは、クライアント装置20が描画データGの画面スクロールを行うため、およびクライアント装置20に対する応答処理を滞らせないための最適なタイミングで、当該クライアント装置20へ送信される。
図20は、前記図14(B)のサーバ装置10が実行するスクロール対応送信処理の詳細を示すフローチャートである。
クライアント装置20からの入力イベントとして、現在表示中の描画データGを元にした画面スクロールの要求が受信されると、例えばカーソルキー信号の入力時間や入力回数に応じた画面スクロールすべき表示領域が、前記図8で示したWebページHPの送信フォーマットFhpに含まれる「基点のx座標」「基点のy座標」「表示領域の幅」「表示領域の高さ」「スクロールのピクセル値」に基づき、スクロール幅Ds単位で算出される(ステップd1)。
すると、前記画面スクロールの要求に応じてクライアント用フレームバッファRAM14a上に生成された描画データGに基づき、画面送信FIFOメモリ14cに格納された新たな画面転送領域(スクロールにより更新されたデータ領域)が確認され(ステップd2)、前記算出されたスクロール表示領域に対応するところのデータ部分が含まれるか否か判断される(ステップd3)。
ここで、前記画面スクロールの要求に応じて画面送信FIFOメモリ14cに格納された新たな画面転送領域において、前記算出されたスクロール表示領域に対応するところのデータ部分が含まれると判断された場合は(ステップd3(YES))、当該画面転送領域のスクロール表示領域に対応するデータ部分(スクロール幅Ds単位)のハッシュ値が計算される(ステップe1)。
そして、キャッシュ状態管理バッファ14e(図13参照)において、前記計算されたハッシュ値と同じハッシュ値を有する状態情報Jdsが存在するか否か判断され(ステップe2)、存在すると判断された場合は(ステップe2(YES))、当該同じハッシュ値を有する状態情報Jdsに対応付けられたキャッシュデータの送信状態が[送信済:1]であるか否か判断される(ステップe3)。
ここで、前記スクロール表示領域に対応する画面転送領域のデータ部分(スクロール幅Ds単位)のハッシュ値と同じハッシュ値を有する状態情報Jdsに対応付けられたキャッシュデータの送信状態が[送信済:1]であると判断された場合は(ステップe3(YES))、前記画面送信FIFOメモリ14cに格納されたスクロール表示領域に対応するデータ部分(スクロール幅Ds単位)の表示画面上での領域(位置)情報と、同キャッシュデータの状態情報Jdsが有するキャッシュIDだけが、前記画面スクロール要求元のクライアント装置20へ送信される(ステップf1)。
そして、今回のスクロール表示領域に対応するデータ部分(スクロール幅Ds単位)が、前記画面送信FIFOメモリ14cから除去され、クライアント装置20への転送が省略される(ステップf2)。
これにより、クライアント装置20から画面スクロールを要求する入力イベントがあっても、そのスクロール表示領域に対応する描画データGのデータ部分と、同じハッシュ値のキャッシュデータが送信済である場合には、当該キャッシュデータのキャッシュIDだけを前記クライアント装置20へ応答送信するだけで、前記描画データGのスクロール表示領域に対応する実際のデータ部分の送信を省略できる。
一方、前記画面送信FIFOメモリ14cに格納された新たな画面転送領域のスクロール表示領域に対応するデータ部分(スクロール幅Ds単位)のハッシュ値について、キャッシュ状態管理バッファ14e(図13参照)に、同じハッシュ値を有する状態情報Jdsが存在しないと判断された場合には(ステップe2(NO))、当該スクロール表示領域に対応するデータ部分はキャッシュデータとして存在しない新たなデータとなるので、前記画面送信FIFOメモリ14cに格納された新たな画面転送領域のスクロール表示領域に対応するデータ部分が通常通りクライアント装置20へ転送される(ステップg1)。
また、前記スクロール表示領域に対応する画面転送領域のデータ部分(スクロール幅Ds単位)のハッシュ値と同じハッシュ値を有する状態情報Jdsに対応付けられたキャッシュデータの送信状態が[未送信:0]であると判断された場合にも(ステップe3(NO))、前記画面送信FIFOメモリ14cに格納された新たな画面転送領域のスクロール表示領域に対応するデータ部分が通常通りクライアント装置20へ転送される(ステップg1)。
この場合、先読みキャッシュFIFOメモリ14dからのスクロール幅Ds単位でのキャッシュデータCDの送信が、スクロールを要求する入力イベントに対して間に合っていないことになるので(理由:伝送遅延が大きい、入力イベントが短い感覚で頻発しているなど)、先読みキャッシュFIFOメモリ14dに格納されている該当データ部分のキャッシュデータは、同キャッシュデータ全体の末尾に回されその送信順序が入れ替えられる(ステップe4)。
図21は、前記SBCシステムのクライアント装置20の先読みキャッシュメモリ24aに記憶されるキャッシュデータの内容を示す図である。
このクライアント装置20の先読みキャッシュメモリ24aには、前記サーバ装置10からそのキャッシュ取得送信処理(図14(A),図15,図16,図18参照)に従い送信されたキャッシュデータCD(例えばアクセス対象WebページHPの全体のデータ)が、画面スクロールの幅Ds単位で受信され、圧縮されたデータ本体と共に、URL−ID、キャッシュID、データサイズ(幅×高さ)、データ圧縮方式(0:JPEG or 1:PNG or …)が付加されて記憶される。
図22は、前記クライアント装置22の表示処理を示すフローチャートである。
クライアント装置20において、ユーザ操作に応じた入力イベント(例えばWebページHPのアクセス要求)が発生され、サーバ装置10へ送信されると、これに応答したサーバ装置10のアプリケーションプログラム(Webブラウザプログラム)に従い、クライアント装置20の表示画面サイズに合わせて生成された描画データG(WebページHPの先頭から表示画面サイズ分の描画データ)が受信される(ステップh1)。
この際、前記サーバ装置10から受信された描画データGは、キャッシュIDでないと判断されるので(ステップh2(NO))、当該描画データGが取り込まれると共に(ステップh3b)、その圧縮がデコードされてフレームバッファRAM25に書き込まれ(ステップh4)、表示装置26に表示される(ステップh5)。
なおこれに伴い、前記サーバ装置10からそのキャッシュ取得送信処理に従い送信されたキャッシュデータCD(アクセス対象WebページHPの全体のデータ)が受信され、図21で示したように、画面スクロールの幅Ds単位で先読みキャッシュメモリ24aに格納される。
ここで、ユーザ操作に応じた画面スクロールの入力イベントが発生され、サーバ装置10へ送信されると、これに応答したサーバ装置10のスクロール対応送信処理(図20参照)に従い送信された、スクロール表示領域に対応する描画データ部分(スクロール幅Ds単位)のキャッシュID、または当該描画データ部分の実データが受信される(ステップh1)。
前記サーバ装置10からキャッシュIDが受信されたと判断された場合には(ステップh2(YES))、当該キャッシュIDを有するスクロール幅Ds単位の描画データ部分が、前記先読みキャッシュメモリ24aから読み出され(ステップh3a)、その圧縮がデコードされてフレームバッファRAM25に上書きされ(ステップh4)、表示装置26に表示される(ステップh5)。
一方、前記サーバ装置10からスクロール表示領域に対応する描画データ部分の実データが受信されたと判断された場合には(ステップh2(NO))、当該描画データ部分が取り込まれると共に(ステップh3b)、その圧縮がデコードされてフレームバッファRAM25に上書きされ(ステップh4)、表示装置26に表示される(ステップh5)。
したがって、前記構成のSBCシステムによれば、クライアント装置20からの入力イベント(WebページHPのアクセス要求)がサーバ装置10に受信されると、サーバ装置10では、前記入力イベントに応じたアプリケーションプログラム(Webブラウザ)が起動されてWebページHPがロードされ、クライアント装置20の表示画面サイズに合わせた描画データGが生成されてクライアント装置20へ転送される。そして、前記WebページHPの全体のデータが、スクロールの幅Ds単位で分割されキャッシュIDを付加したキャッシュデータCDとして先読みキャッシュメモリ14Xに記憶される。この先読みキャッシュメモリ14Xに記憶されたスクロール幅Ds単位のキャッシュデータは、前記描画データGを元にした画面スクロールの移動先となる可能性の高い領域から順次、前記WebページHPのロード開始直後と、ロード終了直後と、サーバ負荷が軽いときとの3段階のタイミングでクライアント装置20へ送信され、当該クライアント装置20の先読みキャッシュメモリ24aに格納される。サーバ装置10は、クライアント装置20から画面スクロールの入力イベントを受信すると、当該画面スクロールに応じた描画データGを生成すると共に、スクロール領域に対応した新たな描画データ部分と同じハッシュ値のキャッシュデータがあるか判断し、ある場合はその表示位置の情報とキャッシュIDだけをクライアント装置20へ送信する。クライアント装置20は、前記サーバ装置10から受信されたキャッシュIDに対応するスクロール幅Ds単位のキャッシュデータを先読みキャッシュメモリ24aから読み出し、表示画面のスクロールを実行する。
このため、サーバ装置10は、WebページHPなどの長大なデータを、画面スクロール用のキャッシュデータとして、クライアント装置20に対する主要な処理に影響を与えない最適なタイミングで送信できる。そして、クライアント装置20では、サーバ装置10との通信環境が高遅延な状態にあっても、WebページHPなどの長大なデータの画面スクロールをレスポンス良く実行できる。
なお、前記実施形態において記載したSBCシステムによる各処理の手法、すなわち、図14(A)・図15・図16・図18のフローチャートに示すサーバ装置10によるキャッシュ取得送信処理、図17(A)のフローチャートに示すサーバ装置10による入力イベント記録処理、図17(B)のフローチャートに示すサーバ装置10によるキャッシュ送信タイミング[Level-3]判定処理、図20のフローチャートに示すサーバ装置10によるスクロール対応送信処理、図22のフローチャートに示すクライアント表示処理等の各手法は、何れもコンピュータに実行させることができるプログラムとして、メモリカード(ROMカード、RAMカード等)、磁気ディスク(フロッピディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の外部記録装置18,28の媒体に格納して配布することができる。そして、サーバ装置10やクライアント装置20のコンピュータ(CPU11,21)は、この外部記憶装置18,28の媒体に記憶されたプログラムを記憶装置(フラッシュROM13,23やRAM14,24)に読み込み、この読み込んだプログラムによって動作が制御されることにより、前記実施形態において説明したサーバ装置10におけるWebページHPなどの長大なデータのキャッシュ取得送信機能を実現し、前述した手法による同様の処理を実行することができる。
また、前記各手法を実現するためのプログラムのデータは、プログラムコードの形態として通信ネットワーク(N)上を伝送させることができ、この通信ネットワーク(N)に接続されたコンピュータ装置(プログラムサーバ)から前記のプログラムデータを取り込んで記憶装置(フラッシュROM13,23やRAM14,24)に記憶させ、前述したサーバ装置10におけるWebページHPなどの長大なデータのキャッシュ取得送信機能を実現することもできる。
なお、本願発明は、前記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、前記各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、各実施形態に示される全構成要件から幾つかの構成要件が削除されたり、幾つかの構成要件が異なる形態にして組み合わされても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除されたり組み合わされた構成が発明として抽出され得るものである。