(57)【要約】クライアント側の性能を測定するためのシステムおよび方法であって、クライアントプロセス（１１４）に送られるべき項目（１０５）を、クライアントプロセス（１１４）に到着する前に途中で捉えるステップを含む。項目（１０５）は変更されてコード（１０８）を含む変更された項目（１０７）が作成される。コード（１０８）はクライアント装置（１１０）のプロセッサに、項目（１０５）に関連付けられるサービスに関連する性能を測定させる。また、コード（１０８）は、プロセッサ（１１６）に性能の測定の結果の測定値に基づいて１つまたは複数の動作を行なわせる。変更された項目（１０７）はクライアントプロセス（１１４）に送られる。
2004537097.tif 000002
【特許請求の範囲】
【請求項１】
クライアント側の性能を測定するための方法であって、
クライアントプロセスに送られるべき項目を、クライアントプロセスに到着する前に途中で捉えるステップと、
前記項目を変更して、クライアント装置上の１つまたは複数のプロセッサに、
前記項目に関連付けられるサービスに関連する性能を測定するステップと、
性能を測定する前記ステップの結果の測定値に基づいて、１つまたは複数の動作を行なうステップとを行なわせるコードを含む変更された項目を作成するステップと、
前記変更された項目を前記クライアントプロセスに送るステップとを含む、方法。
【請求項２】
前記項目を変更する前記ステップは、前記サービスに対して前記項目を生成するアプリケーションに対して透過的に行われる、請求項１に記載の方法。
【請求項３】
性能を測定する前記ステップおよび前記測定値に基づいて１つまたは複数の動作を行なう前記ステップは、前記クライアントプロセスのユーザに対して透過的に行われる、請求項１に記載の方法。
【請求項４】
前記測定値に基づいて１つまたは複数の動作を行なう前記ステップは、前記測定値を示すデータをネットワーク上である実体に送るステップをさらに含む、請求項１に記載の方法。
【請求項５】
ある実体に前記データ送る前記ステップは、後の前記クライアントプロセスからの前記サービスの要求に応答して、前記サービスに関連付けられるサーバ装置に自動的に送られるデータ構造に前記データを記憶するステップをさらに含む、請求項４に記載の方法。
【請求項６】
前記クライアントプロセスはウェブブラウザであり、
前記データ構造は、前記ウェブブラウザによって前記クライアント装置上に記憶されるクッキーである、請求項５に記載の方法。
【請求項７】
前記項目を変更する前記ステップは、前記クライアントプロセスに要求を発行させるコードを前記項目に付加するステップを含み、
データをある実体に送る前記ステップは、前記データを含む前記要求をサーバ装置に送るステップをさらに含む、請求項４に記載の方法。
【請求項８】
前記要求はある特定のファイルに対するものであり、前記特定のファイルに対する前記要求に応答して、前記クライアント装置の表示装置上に既にレンダリングされているページには前記クライアントプロセスによって変更は行われない、請求項７に記載の方法。
【請求項９】
前記測定値を示す前記データをサーバ装置上のログファイルに記憶するステップをさらに含む、請求項４に記載の方法。
【請求項１０】
前記測定値を示す前記データを前記ネットワーク上で前記実体のデータベースに記憶するステップをさらに含む、請求項４に記載の方法。
【請求項１１】
前記測定値を示すデータを前記クライアントプロセスからネットワーク上で受取るステップと、
前記測定値を示す前記データに基づいて、１つまたは複数の動作を行なうステップとをさらに含む、請求項１に記載の方法。
【請求項１２】
前記測定値を示す前記データに基づいて、１つまたは複数の動作を行なう前記ステップは、
前記データが、性能があるしきい値を下回ったことを示すかを判定するステップと、
前記データが、性能が前記しきい値を下回ったことを示す場合、通知メッセージを送るステップとをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記測定値に基づいて、１つまたは複数の動作を行なう前記ステップは、
前記測定値が、性能があるしきい値を下回ったことを示すかを判定するステップと、
前記測定値が、性能が前記しきい値を下回ったことを示す場合、通知メッセージを送るステップとをさらに含む、請求項１に記載の方法。
【請求項１４】
通知メッセージを送る前記ステップは、前記通知メッセージを前記サービスに関連付けられるサーバ装置の管理者に送るステップを含む、請求項１３に記載の方法。
【請求項１５】
通知メッセージを送る前記ステップは、前記通知メッセージを前記クライアントプロセスのユーザに送るステップを含む、請求項１３に記載の方法。
【請求項１６】
前記測定値は、前記クライアントプロセスのユーザが前記クライアント装置の表示装置上にレンダリングされた第１のウェブページ上の項目を選択する第１の時間と、第２のウェブページが前記クライアント装置の前記表示装置上に完全にレンダリングされる第２の時間との間のクライアント応答時間である、請求項１に記載の方法。
【請求項１７】
前記コードは、前記クライアント装置上の１つまたは複数のプロセッサに、前記アプリケーションから前記サービスを入手することに参加する前記クライアントプロセスの１つまたは複数の構成要素に関連する補助的な情報を収集するステップをさらに行なわせ、
前記測定値に基づいて１つまたは複数の動作を行なう前記ステップは、前記測定値を前記補助的な情報に相互に関連付けるステップを含む、請求項１に記載の方法。
【請求項１８】
前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
前記アプリケーションによって作成される前記項目に関連付けられる種類を判定するステップと、
前記項目の前記種類に基づいて前記項目を変更する前記ステップを行なうべきかを判定するステップとを含む、請求項１に記載の方法。
【請求項１９】
前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
前記アプリケーションによって作成される前記項目に関連付けられる一意の参照を判定するステップと、
前記一意の参照がある特定の参照に合致するかに基づいて、前記項目を変更する前記ステップを行なうべきかを判定するステップとをさらに含む、請求項１に記載の方法。
【請求項２０】
前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
前記クライアントプロセスに送られるべき項目に対する変更された項目の割合を判定するステップと、
前記割合がある特定の割合を下回るかに基づいて、前記項目を変更する前記ステップを行なうべきかを判定するステップとをさらに含む、請求項１に記載の方法。
【請求項２１】
前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスに送
られる前にキャッシュに記憶され、
前記項目を途中で捉える前記ステップは、前記キャッシュ内の前記項目にアクセスするステップを含み、
前記変更された項目を前記クライアントプロセスに送る前記ステップは、前記キャッシュ内の前記項目を前記変更された項目で置換えるステップを含む、請求項１に記載の方法。
【請求項２２】
前記キャッシュは、前記サービスに関連付けられるサーバ装置上にある、請求項２１に記載の方法。
【請求項２３】
前記キャッシュは、前記クライアントプロセスのプロキシサーバ上にある、請求項２１に記載の方法。
【請求項２４】
前記項目はハイパーテキストマークアップ言語（ＨＴＭＬ）ステートメントを含み、
前記クライアントプロセスはウェブブラウザである、請求項１に記載の方法。
【請求項２５】
前記ウェブブラウザはJava(R)Scriptを作動させるように構成され、
前記コードはJava(R)Scriptステートメントを含む、請求項２４に記載の方法。
【請求項２６】
前記コードは、スクリプト言語に準拠する、請求項１に記載の方法。
【請求項２７】
前記コードはJava(R)アプレットを含む、請求項１に記載の方法。
【請求項２８】
前記コードは、ActiveXモジュールを含む、請求項１に記載の方法。
【請求項２９】
前記項目を変更する前記ステップは、前記項目の端部に前記コードを追加するステップをさらに含む、請求項１に記載の方法。
【請求項３０】
前記項目はマークアップ言語ステートメントを含み、
前記項目を変更する前記ステップは、前記マークアップ言語ステートメントのある特定のステートメントに前記コードを挿入するステップをさらに含む、請求項１に記載の方法。
【請求項３１】
前記コードは、第１の項目に付加される第１のコードおよび第２の項目に付加される第２のコードのうちの少なくとも１つを含み、
前記性能を測定するステップは、前記第１のコードに基づいて時間の測定を開始するステップおよび前記第２のコードに基づいて時間の測定を終了するステップを含む、請求項１に記載の方法。
【請求項３２】
前記第１のコードは、前記クライアントプロセスのユーザが前記第１の項目に含まれる制御をクリックすることに応答して実行され、
前記第２のコードは、前記第２の項目が完全にロードされることに応答して実行される、請求項３１に記載の方法。
【請求項３３】
前記コードは、前記第１のコードの前記クライアントプロセスへの到着時に実行される第１のコード、および前記第１のコードの到着後に前記クライアントプロセスによって生成されるデータ構造に応答して実行される第２のコードを含む、請求項１に記載の方法。
【請求項３４】
前記データ構造は、前記クライアント装置でのイベントを記述する、請求項３３に記載の方法。
【請求項３５】
前記イベントは、前記クライアント装置上で実行するオペレーティングシステムから受取られるメッセージである、請求項３４に記載の方法。
【請求項３６】
前記イベントは、ユーザによる前記クライアント装置の制御の操作である、請求項３４に記載の方法。
【請求項３７】
前記第２のコードは、前記１つまたは複数のプロセッサに性能を測定する前記ステップを行なわせる、請求項３３に記載の方法。
【請求項３８】
前記第２のコードは、前記１つまたは複数のプロセッサに現在の時間を記録させる、請求項３３に記載の方法。
【請求項３９】
前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスによって生成される前記データ構造に応答して実行されるべき第３のコードを含み、
前記第１のコードは、前記１つまたは複数のプロセッサに第３のコードを前記第２のコードで置換えるステップを行なわせる、請求項３３に記載の方法。
【請求項４０】
前記コードは、前記クライアントプロセスによって生成される第１のイベントを記述するデータ構造に応答して実行される第１のコード、および前記クライアントプロセスによって生成される第２のイベントを記述するデータ構造に応答して実行される第２のコードを含む、請求項１に記載の方法。
【請求項４１】
前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスによる前記第２のイベントを記述する前記データ構造に応答して実行されるべき第３のコードを含み、
前記第１のコードは前記１つまたは複数のプロセッサに、前記第３のコードを前記第２のコードで置換えるステップを行なわせる、請求項４０に記載の方法。
【請求項４２】
クライアント側の性能を測定するための命令の１つまたは複数のシーケンスを保持するコンピュータ読取可能な媒体であって、１つまたは複数のプロセッサによる前記命令の１つまたは複数のシーケンスの実行は、前記１つまたは複数のプロセッサに、
クライアントプロセスに送られるべき項目を、前記クライアントプロセスに到着する前に途中で捉えるステップと、
前記項目を変更して、前記クライアント装置の１つまたは複数のプロセッサに、
前記項目に関連付けられるサービスに関連する性能を測定するステップと、
性能を測定する前記ステップの結果の測定値に基づいて、１つまたは複数の動作を行なうステップとを行なわせるコードを含む変更された項目を生成するステップと、
前記変更された項目を前記クライアントプロセスに送るステップとを含む、コンピュータ読取可能な媒体。
【請求項４３】
前記項目を変更する前記ステップは、前記サービスに対して前記項目を生成するアプリケーションに対して透過的に行なわれる、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項４４】
性能を測定する前記ステップおよび前記測定値に基づいて１つまたは複数の動作を行なう前記ステップは、前記クライアントプロセスのユーザに対して透過的に行なわれる、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項４５】
前記測定値に基づいて１つまたは複数の動作を行なう前記ステップは、前記測定値を示
すデータをネットワーク上である実体に送るステップをさらに含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項４６】
前記データをある実体に送る前記ステップは、後の前記クライアントプロセスからの前記サービスの要求に応答して、前記サービスに関連付けられるサーバ装置に自動的に送られるデータ構造に前記データを記憶するステップをさらに含む、請求項４５に記載のコンピュータ読取可能な媒体。
【請求項４７】
前記クライアントプロセスはウェブブラウザであり、
前記データ構造は、前記ウェブブラウザによって前記クライアント装置に記憶されるクッキーである、請求項４６に記載のコンピュータ読取可能な媒体。
【請求項４８】
前記項目を変更する前記ステップは、前記クライアントプロセスに要求を発行させるコードを前記項目に付加するステップを含み、
データをある実体に送る前記ステップは、前記データを含む前記要求をサーバ装置に送るステップをさらに含む、請求項４５に記載のコンピュータ読取可能な媒体。
【請求項４９】
前記要求はある特定のファイルに対するものであり、前記ある特定のファイルに対する前記要求に応答して、前記クライアント装置の表示装置上に既にレンダリングされたページには前記クライアントプロセスによって変更は行なわれない、請求項４８に記載のコンピュータ読取可能な媒体。
【請求項５０】
前記１つまたは複数のプロセッサによる前記命令の１つまたは複数のシーケンスの実行は、前記１つまたは複数のプロセッサに、前記測定値を示す前記データをサーバ装置上のログファイルに記憶するステップをさらに行なわせる、請求項４５に記載のコンピュータ読取可能な媒体。
【請求項５１】
前記１つまたは複数のプロセッサによる前記命令の１つまたは複数のシーケンスの実行は、前記１つまたは複数のプロセッサに、前記測定値を示す前記データを前記ネットワーク上の前記実体のデータベースに記憶するステップをさらに行なわせる、請求項４５に記載のコンピュータ読取可能な媒体。
【請求項５２】
前記１つまたは複数のプロセッサによる前記命令の１つまたは複数のシーケンスの実行は、前記１つまたは複数のプロセッサに、
前記測定値を示すデータを前記クライアントプロセスからネットワーク上で受取るステップと、
前記測定値を示す前記データに基づいて１つまたは複数の動作を行なうステップとをさらに行なわせる、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項５３】
前記測定値を示す前記データに基づいて１つまたは複数の動作を行なう前記ステップは、
前記データが、性能があるしきい値を下回ったことを示すかを判定するステップと、
前記データが、性能が前記しきい値を下回ったことを示す場合、通知メッセージを送るステップをさらに含む、請求項５２に記載のコンピュータ読取可能な媒体。
【請求項５４】
前記測定値に基づいて１つまたは複数の動作を行なう前記ステップは、
前記測定値が、性能があるしきい値を下回ったことを示すかを判定するステップと、
前記測定値が、性能が前記しきい値を下回ったことを示す場合、通知メッセージを送るステップをさらに含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項５５】
通知メッセージを送る前記ステップは、前記サービスに関連付けられるサーバ装置の管理者に前記通知メッセージを送るステップを含む、請求項５４に記載のコンピュータ読取可能な媒体。
【請求項５６】
通知メッセージを送る前記ステップは、前記クライアント装置のユーザに前記通知メッセージを送るステップを含む、請求項５４に記載のコンピュータ読取可能な媒体。
【請求項５７】
前記測定値は、前記クライアントプロセスのユーザが前記クライアント装置の表示装置にレンダリングされた第１のウェブページ上の項目を選択する第１の時間と、第２のウェブページが前記クライアント装置の前記表示装置に完全にレンダリングされる第２の時間との間のクライアント応答時間である、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項５８】
前記コードは、前記クライアント装置の前記１つまたは複数のプロセッサに、前記アプリケーションから前記サービスを入手することに参加する前記クライアントプロセスの１つまたは複数の構成要素に関連する補助的な情報を収集するステップをさらに行なわせ、
前記測定値に基づいて１つまたは複数の動作を行なう前記ステップは、前記測定値を前記補助的な情報に相互に関連付けるステップを含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項５９】
前記１つまたは複数のプロセッサによる前記命令の１つまたは複数のシーケンスの実行は、前記１つまたは複数のプロセッサに、前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
前記アプリケーションによって作成される前記項目に関連付けられる種類を判定するステップと、
前記項目の前記種類に基づいて前記項目を変更する前記ステップを行なうべきかを判定するステップとをさらに行なわせる、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項６０】
前記１つまたは複数のプロセッサによる前記命令の１つまたは複数のシーケンスの実行は、前記１つまたは複数のプロセッサに、前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
前記アプリケーションによって作成される前記項目に関連付けられる一意の参照を判定するステップと、
前記一意の参照がある特定の参照に合致するかに基づいて前記項目を変更する前記ステップを行なうべきかを判定するステップとをさらに行なわせる、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項６１】
前記１つまたは複数のプロセッサによる前記命令の１つまたは複数のシーケンスの実行は、前記１つまたは複数のプロセッサに、前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
前記クライアントプロセスに送られるべき項目に対する変更される項目の割合を判定するステップと、
前記割合がある特定の割合を下回るかに基づいて前記項目を変更する前記ステップを行なうかを判定するステップとをさらに行なわせる、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項６２】
前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスに送られる前にキャッシュに記憶され、
前記項目を途中で捉える前記ステップは、前記キャッシュ内の前記項目にアクセスするステップを含み、
前記変更された項目を前記クライアントプロセスに送る前記ステップは、前記キャッシュ内の前記項目を前記変更された項目で置換えるステップを含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項６３】
前記キャッシュは、前記サービスに関連付けられるサーバ装置上にある、請求項６２に記載のコンピュータ読取可能な媒体。
【請求項６４】
前記キャッシュは、前記クライアントプロセスのプロキシサーバ上にある、請求項６２に記載のコンピュータ読取可能な媒体。
【請求項６５】
前記項目はハイパーテキストマークアップ言語（ＨＴＭＬ）ステートメントを含み、
前記クライアントプロセスはウェブブラウザである、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項６６】
前記ウェブブラウザはJava(R)Scriptを作動させるように構成され、
前記コードはJava(R)Scriptステートメントを含む、請求項６５に記載のコンピュータ読取可能な媒体。
【請求項６７】
前記コードはスクリプト言語に準拠する、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項６８】
前記コードはJava(R)アプレットを含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項６９】
前記コードはActiveXモジュールを含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項７０】
前記項目を変更する前記ステップは、前記項目の端部に前記コードを追加するステップをさらに含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項７１】
前記項目はマークアップ言語ステートメントを含み、
前記項目を変更する前記ステップは、前記マークアップ言語ステートメントのある特定のステートメントに前記コードを挿入するステップをさらに含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項７２】
前記コードは、第１の項目に付加される第１のコードおよび第２の項目に付加される第２のコードのうちの少なくとも１つを含み、
性能を測定する前記ステップは、前記第１のコードに基づいて時間の測定を開始するステップおよび前記第２のコードに基づいて時間の測定を終了するステップを含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項７３】
前記第１のコードは、前記クライアントプロセスのユーザが前記第１の項目に含まれる制御をクリックすることに応答して実行され、
前記第２のコードは、前記第２の項目が完全にロードされることに応答して実行される、請求項７２に記載のコンピュータ読取可能な媒体。
【請求項７４】
前記コードは、前記第１のコードの前記クライアントプロセスへの到着時に実行される第１のコード、および前記第１のコードの到着後に前記クライアントプロセスによって生成されるデータ構造に応答して実行される第２のコードを含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項７５】
前記データ構造は、前記クライアント装置でのイベントを記述する、請求項７４に記載のコンピュータ読取可能な媒体。
【請求項７６】
前記イベントは、前記クライアント装置上で実行するオペレーティングシステムから受取られるメッセージである、請求項７５に記載のコンピュータ読取可能な媒体。
【請求項７７】
前記イベントは、ユーザによる前記クライアント装置の制御の操作である、請求項７５に記載のコンピュータ読取可能な媒体。
【請求項７８】
前記第２のコードは、前記１つまたは複数のプロセッサに性能を測定する前記ステップを行なわせる、請求項７４に記載のコンピュータ読取可能な媒体。
【請求項７９】
前記第２のコードは、前記１つまたは複数のプロセッサに現在の時間を記録させる、請求項７４に記載のコンピュータ読取可能な媒体。
【請求項８０】
前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスによって生成される前記データ構造に応答して実行されるべき第３のコードを含み、
前記第１のコードは、前記１つまたは複数のプロセッサに前記第３のコードを前記第２のコードで置換えるステップを行なわせる、請求項７４に記載のコンピュータ読取可能な媒体。
【請求項８１】
前記コードは、前記クライアント装置によって生成される第１のイベントを記述するデータ構造に応答して実行される第１のコード、および前記クライアントプロセスによって生成される第２のイベントを記述するデータ構造に応答して実行される第２のコードを含む、請求項４２に記載のコンピュータ読取可能な媒体。
【請求項８２】
前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスによる前記第２のイベントを記述する前記データ構造に応答して実行されるべき第３のコードを含み、
前記第１のコードは、前記１つまたは複数のプロセッサに前記第３のコードを前記第２のコードで置換えるステップを行なわせる、請求項８１に記載のコンピュータ読取可能な媒体。
【請求項８３】
クライアントプロセスを実行するクライアント装置を、アプリケーションを実行してサービスを提供するように構成されるサーバ装置に接続するネットワーク上でクライアント側の性能に応答する方法であって、
前記アプリケーションによって作成される項目を途中で捉えるステップと、
前記アプリケーションに対して前記項目を透過的に変更して、前記クライアント装置の１つまたは複数のプロセッサに、
前記アプリケーションによって提供される前記サービスに関連する性能を測定するステップと、
性能を測定する前記ステップの結果の測定値に基づいて、前記測定値を示すデータを前記サーバ装置に送るステップとを行なわせるコードを含む変更された項目を生成するステップと、
前記変更された項目を前記クライアントプロセスに送るステップと、
前記測定値を示す前記データを受取るステップと、
前記測定値を示す前記データをデータベースに記憶するステップと、
前記測定値を示すデータに基づいて、
前記データが、性能があるしきい値を下回ったことを示すかを判定するステップと、
前記データが、性能が前記しきい値を下回ったことを示す場合、通知メッセージを送るステップとを含む、方法。
【請求項８４】
コンピュータ読取可能な媒体であって、
１つまたは複数のプロセッサ上で実行するクライアント装置によって、１つまたは複数のプロセッサを有する装置の表示装置上に呈示するための要素を示すデータと、
前記装置での受取り時に実行される命令の第１のシーケンスと、
前記命令の第１のシーケンスの到着後に前記クライアントプロセスによって起動される命令の第２のシーケンスとを保持し、
前記命令の第２のシーケンスは前記１つまたは複数のプロセッサに、
前記表示装置上の前記要素を呈示することに関連する性能を測定するステップと、
性能を測定する前記ステップの結果の測定値に基づいて１つまたは複数の動作を行なうステップとを行なわせ、
前記命令の第１のシーケンスは前記クライアントプロセスに、前記命令の第２のシーケンスを前記データによって示される要素に関連付けさせる、コンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は、ウェブサーバからサービスを入手する際のウェブクライアントの性能を判定することに関し、特に、提供されるサービスに関するウェブクライアントの性能の測定およびそれに対する応答を制御するための技術に関する。
【背景技術】
【０００２】
発明の背景
多くの企業は、インターネットを使用して遠くのエージェントおよび顧客に到達したいと考えている。インターネットは、各々が１つまたは複数のノードを備えたコンピュータネットワークの公共のネットワークである。インターネットはオープンな標準のプロトコルを使用してノードをアドレス指定し、１つのノードから別のノードへと情報を渡すユーザは、ネットワーク上のコンピュータにログオンすることによって、インターネットにアクセスする。ネットワーク上のコンピュータは。インターネットサービスプロバイダ（ＩＳＰ）によって所有および運営されていることが多い。通常、ユーザはユーザ自身のコンピュータとＩＳＰのコンピュータとの間に切断可能なリンクを確立する。ユーザのコンピュータ（クライアント装置）で作動するクライアントアプリケーションプログラム（クライアントプロセス）は、インターネット上の異なるコンピュータ（サーバ装置）で作動するサーバアプリケーションプログラム（サーバプロセス）と対話する。クライアントプロセスは、アプリケーションプログラムからのサービスに対する要求をサーバ装置に送ることで通信を開始する。アプリケーションは、クライアントプロセスに何らかのコンテンツを送り返すことを含む、何らかのサービスを行なうことで応答する。
【０００３】
World Wide Web（Web）は、さまざまなサーバによって提供され、かつハイパーテキストトランスファープロトコル（ＨＴＴＰ）を使用してウェブブラウザと呼ばれるある特定のクライアントによってアクセス可能であるインターネット上で利用可能なサービスの集りである。ウェブブラウザを使用して、ユーザは、ユニバーサルリソースロケータ（ＵＲＬ）名によって識別されるウェブ上のサービスを選択し、サーバによって行なわれる動作の形でサービスをユーザに提供させ、コンテンツをクライアントに返させることができる。コンテンツは１つまたは複数のハイパーテキストマークアップ言語（ＨＴＭＬ）ページを含む。返されたコンテンツは、大抵テキスト情報を含み、図形、映像および音声の要素を含むことも多い。返されたコンテンツの要素の一部は、リンクに関連付けられ、各リンクはウェブ上の別のリソースへのＵＲＬを含む。ブラウザのユーザがリンクに関連付けられる要素を選択すると、ブラウザは、含まれるＵＲＬにあるサービスの要求を送る。ＵＲＬに関連付けられるネットワーク上の場所は、ウェブサイトと呼ばれる。
【０００４】
ウェブに基づくサービスを提供している当事者は、多く場合、ユーザのサービスの使用感に関心がある。ユーザのサービスの使用感ができる限り好ましいものであることがサービスプロバイダの最大の関心事である。一般に、サービスが正確、容易かつすばやく提供されたときには、ウェブに基づくサービスのユーザの使用感は好ましいものである。提供されるサービスおよび返されるコンテンツがユーザの期待したものである場合、サービスは正確に提供されている。ユーザがキーストロークなどの手動の操作をほとんど行なわず、かつほとんど考えずにサービスおよびコンテンツを入手できれば、サービスは容易に提供されている。ユーザがサービスを要求してから、サービスが行なわれたことを示すコンテンツが返されるまでの間に、頻繁または長い一時停止を感じることがなければ、リソースはすばやく提供されている。
【０００５】
ユーザの使用感の一部は、サーバアプリケーションプログラムおよびサーバ装置の性能に関連している。たとえば、要求がサーバで受取られて、サーバからコンテンツが送られるまでの間に費やされる時間は、ユーザによって遅延と知覚される。この部分の遅延は、サーバプロセスによって行なわれる処理およびサーバ装置の処理能力によって制御される。コンテンツが送られたとき（注文または払戻の確認がクライアントプロセスに送られたときなど）と、サービスが完全行なわれたとき（品物が出荷されたか、またはクレジットカードの口座に貸方または信用貸しが記録されたときなど）との間には、さまざまな遅延が生じ得る。サーバ側の性能は企業によって監視することができ、ユーザの好ましくない使用感に繋がると判断された場合には修正することができる。たとえば、大量の要求によって起こる知覚可能な遅延は、サーバ装置を追加するか、またはさもなくばウェブサイトに充てる施設を改良することによって、修正し、遅延を知覚できないほどに小さくすることができる。
【０００６】
ユーザの使用感の一部は、ネットワークおよびクライアントプロセスの性能に関連するが、ネットワークおよびクライアントプロセスは、サーバアプリケーションまたはサーバ装置によって容易に制御または監視することができない。要求および返されるコンテンツがネットワークを横断する際に遅延が生じる。クライアント装置がクライアント装置の表示装置にコンテンツをレンダリングするときにも遅延が生じる。他にも、サーバ側では明らかでない性能要因がある。たとえば、ユーザは、混乱しながら所望のリソースを見つけようとして、余分にキーを打ったりマウスを動かしたりすることがある。ユーザによるそのような余分な労力は、多くの場合、ウェブサイトの設計者には予測されていない。設計がそのような問題を予測できないのは、設計者がウェブサイトをテストする際、設計者はウェブサイトで何が利用可能であるかを既に知っているという事実によるところがある。
【０００７】
クライアント側で知覚される性能は、サーバ側では容易に監視できないため、ウェブサイトに責任を持つ当事者には容易に利用することができない。クライアント側で知覚される性能を知らないため、サービスプロバイダは、過剰な遅延および余分なキーストロークなどの知覚される性能に関する多くの問題に応答できない。
【０００８】
サービスプロバイダがクライアント側の性能の測定値を得るための１つの方法は、ネットワーク上の異なる場所に分散された演算装置でエージェントプログラム（エージェント）のセットを作動させることに基づいてクライアント側の性能を推測することである。ブラウザのユーザをシミュレートするために、各エージェントは定期的に１つまたは複数のサービスをウェブサイトから要求し、１つまたは複数のＨＴＭＬページを受取る（ダウンロードする）。要求を送ってから、エージェントを作動させる装置で返されるコンテンツを受取るかまたはレンダリングするまでにかかる時間が、知覚されるクライアント応答時間の推定値として使用される。エージェントのセット上で推定されたクライアント応答時間の分布は、本物のユーザが感じる実際のクライアント応答時間の分布を表わすものと考えられる。
【０００９】
多くの用途に好適であるものの、「シミュレーション−エージェント」方法にはいくつか欠点がある。たとえば、シミュレーション−エージェント方法は、通常、ウェブサイトのサービスのいくつかのみの応答時間を測定するにすぎず、サービスの中には全くテストされないものもある。シミュレーション−エージェント方法は、本物のユーザがウェブサイトの性能を知覚する実際の場所からの応答時間を測定しない。シミュレーション−エージェント方法は、ユーザの混乱および余分なカーソルの動き、または余分なキーストロークをシミュレートしない。シミュレーション−エージェント方法は、本物のユーザと競合するエージェントによって、ウェブサイトに擬似的な負荷を与える。したがって、エージェント自身が、知覚される性能の低下の一因となる。さらに、シミュレーション−エージェント方法は、推定されるクライアント応答時間をサービスプロバイダに報告するため、ネットワークのトラフィックを増やす。
【００１０】
第２の方法は、クライアント装置にエージェントをインストールするものである。クライアント側エージェントは、本物のユーザのクライアントプロセスによってダウンロードされるページのクライアント応答時間を測定する。多くの用途に好適であるものの、クライアント側エージェント方法にも、いくつかの欠点がある。クライアント側エージェント方法には、エージェントソフトウェアをクライアント装置にインストールし、かつ維持するための面倒なステップが伴う。たとえば、エージェントの中には、他の装置ドライバのメモリにマップし、それらの装置ドライバの活動を記録する特別な装置ドライバの形を取るものがある。この例では、それらの他の装置ドライバがアップグレードされるかまたは交換されるのに伴い、互換性を保つようにエージェントを維持しなければならない。クライアント側エージェント方法には、測定された応答時間を保存し、探し、スケジュールし、かつネットワーク上でサービスプロバイダに送るための、クライアント装置での面倒なステップも伴う。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述のことに基づき、ウェブサイトを提供するサービスプロバイダが、ウェブサイトで提供されるサービスに関連するクライアント側の性能を測定し、かつクライアント側の性能の問題に応答することを可能にする技術が必要とされているのは明らかである。
【課題を解決するための手段】
【００１２】
発明の概要
クライアント側の性能を測定するための技術は、クライアントプロセスに送られるべき項目を、クライアントプロセスに到達する前に途中で捉えるステップを含む。項目は変更されて、コードを含む変更された項目が作成される。このコードは、項目に関連付けられたサービスに関連する性能をクライアント装置のプロセッサに測定させる。また、このコードは、性能測定の結果の測定値に基づいて１つまたは複数の動作をプロセッサに行なわせる。変更された項目はクライアントプロセスに送られる。
【００１３】
この発明の別の局面によると、クライアント側の性能に応答するための技術は、アプリケーションによって作成された項目を途中で捉えるステップを含む。ネットワークは、クライアントプロセスを実行するクライアント装置を、アプリケーションを実行してサービスを提供するように構成されるサーバ装置に接続する。項目は、アプリケーションに対して透過的に変更され、コードを含む変更された項目が作成される。このコードは、アプリケーションによって提供されるサービスに関連する性能をクライアント装置のプロセッサに測定させる。性能の測定の結果の測定値に基づき、コードは、プロセッサに、測定値を示すデータをサーバ装置へと送らせる。変更された項目はクライアントプロセスに送られ、測定値を示すデータは受取られ、データベースに記憶される。このデータに基づき、性能がしきい値を下回ったかが判定される。性能がしきい値を下回った場合、通知メッセージが送られる。
【００１４】
この発明の別の局面によると、コンピュータ読取可能な媒体は、プロセッサ上で実行しているクライアントプロセスによってプロセッサを有する装置の表示装置上で呈示するための要素を示すデータを保持する。コンピュータ読取可能な媒体は、装置での受取り時に実行される命令の第１のシーケンスも保持する。コンピュータ読取可能な媒体は、命令の第１のシーケンスの到着後に、クライアントプロセスによって呼出される命令の第２シーケンスも保持する。命令の第２のシーケンスは、要素を表示装置に呈示することに関連する性能をプロセッサに測定させる。命令の第２のシーケンスは、性能測定の結果の測定値に基づいてある動作をプロセッサに行なわせる。命令の第１のシーケンスは、クライアントプロセスに、命令の第２のシーケンスをデータによって示される要素に関連付けさせる。
【発明の効果】
【００１５】
これらの技術によって、サービスプロバイダは、ウェブに基づくサービスから項目がクライアントプロセスへと送られるたびに、自動的に項目を変更することができ、クライアント装置に性能を監視するエージェントをインストールし、かつ維持する面倒なステップをなくすことができる。これら技術のさまざまな実施例では、変更はサーバアプリケーションの設計者に対して透過的に行なうことができるため、新しいサーバアプリケーションにも既存のサーバアプリケーションにも容易に適用することができる。またこれらの技術によって、サービスプロバイダは、ウェブサイトに擬似的な負荷をかけることなく、本物のユーザが感じる実際の性能の測定値を得ることができる。変更されたコンテンツ内のコードは、サービスプロバイダによる分析のためにこれらの測定値をサービスプロバイダに報告することから、クライアントプロセスのユーザに自動的に通知すること、さらに、性能の問題をクライアントプロセスまたはクライアント装置の特定の構成要素に相互に関連付けることなどによって、好ましくない性能の原因を診断することなど、所望の応答をするように適応させることができる。
【００１６】
添付の図面の中で、限定ではなく例によってこの発明を説明する。図面中の同様の参照番号は同様の要素を示す。
【発明を実施するための最良の形態】
【００１７】
好ましい実施例の詳細な説明
クライアント側の性能をサーバ制御で測定するための技術を説明する。以下の説明では、説明のため、多数の具体的な詳細を示して、この発明を完全に理解できるようにしている。しかしながら、これらの具体的な詳細なしにこの発明を実行できることは、当業者にとって明らかであろう。場合によって、周知の構造および装置をブロック図の形で示して、不必要にこの発明をわかりにくくするのを避けている。
【００１８】
構造要素の概要
この発明の一実施例による構造要素およびそれらの上で動作するプロセスを図１に示す。図１は、一実施例によるサービスプロバイダのサーバ装置１０２およびネットワーク１２０に接続されるクライアント装置１１０を示すブロック図である。クライアント装置１１０は、クライアントプロセス１１４を実行し、これがネットワークに接続されるサーバ装置で実行するアプリケーションからのサービスを要求する。サーバ装置１０２はアプリケーション１０４を含み、これはクライアントプロセスからの要求に応答して、ネットワーク上でサービスを提供するプロセスである。たとえば、サーバ装置１０２上のウェブサーバプロセスは、クライアントプロセス１１４からの要求をアプリケーション１０４へとルーティングし、応答をネットワークへとルーティングする。実施例によっては、ウェブサーバプロセスは、特定の機能をウェブサーバに付加するためのサーブレット１０３を含む。
【００１９】
クライアント装置は、いくつかのクライアント装置にセキュリティなどの１つまたは複数の共通のサービスを提供するプロキシサーバ１２４を通じてネットワークに接続される。他の実施例では、クライアント装置は、プロキシサーバ１２４なしにネットワーク１２０に直接接続される。図１に示されるように、サーバ装置１０２は、後述するように、いくつかのサーバにセキュリティなどの１つまたは複数の共通のサービスを提供する特別なプロキシサーバ１２２を通じてネットワーク１２０に接続される。実施例によっては、サーバ装置１０２は、特別なプロキシサーバ１２２なしにネットワークに直接接続される。
【００２０】
図１によると、ネットワーク１２０上でクライアントプロセス１１４から受取られた要求に応答して、アプリケーション１０４は項目１０５を生成し、ネットワーク上でクライアントプロセス１１４に送る。項目１０５は、一般に、ネットワーク上で提供され得るあらゆる形のコンテンツを表わす。項目１０５は、クライアントの要求を受取る前に生成され、記憶された静的なウェブページを検索することによってか、または要求および要求時のシステムの状態に基づいて動的にウェブページを生成することによってなど、当該技術分野で公知の態様で、アプリケーション１０４によって生成することができる。システムの状態は、データベースの現在の項目、ハードウェアの現在の構成、現在の時間等を含む。
【００２１】
項目１０５が作成されると、インスツルメント挿入プロセス１０６が、クライアントに到着する前に項目１０５を途中で捉え、項目１０５を変更し、元々の項目１０５に基づいて変更された項目１０７を生成する。インスツルメント挿入プロセス１０６がこのように名付けられているのは、変更が、クライアント側の性能を測定するように項目に本質的にインスツルメントを取り付ける（instrument）ためである。
【００２２】
一実施例によると、変更された項目１０７は、コードを含み、これは、クライアントプロセス１１４に受取られると、クライアント装置１１０の１つまたは複数のプロセッサに、アプリケーション１０４によって提供されるサービスに関連する性能を測定させ、少なくとも１つの結果の測定値に基づいて１つまたは複数の動作を行なって測定された性能に応答させる。これについては後述する。
【００２３】
一実施例によると、何らかのコード１０８が予め規定され、サーバ装置１０２に記憶される。インスツルメント挿入プロセス１０６は、変更された項目１０７が予め規定されたコード１０８を含むように、予め規定されたコード１０８を挿入して元々の項目を変更する。実施例によっては、変更された項目１０７に挿入されるコードは、すべて予め規定される。また実施例によっては、コードの一部が予め規定されるか、または全くされない場合もある。World Wide Webに関わる実施例では、サーバ装置１０２で作動するウェブサーバプロセスがインスツルメント挿入プロセス１０６を実行する。別の実施例では、ウェブサーバのサーブレット１０３がインスツルメント挿入プロセス１０６を実行する。実施例によっては、項目１０５、予め規定されたコード１０８、インスツルメント挿入プロセス１０６および変更された項目１０７は、後述するように特別なプロキシサーバ１２２にある。
【００２４】
図１に示すように、クライアントプロセス１１４は、変更された項目内のコードの結果として、性能測定インスツルメント１１６を含む。性能測定インスツルメント１１６は、クライアントの性能の何らかの局面を測定し、測定値に基づいて動作するプロセスである。
【００２５】
一実施例によると、結果としての１つまたは複数の測定値は、クライアント装置１１０のメモリまたは記憶装置の測定値データ構造１１８に記憶される。別の実施例では、性能測定インスツルメント１１６は、クライアントプロセス１１４外で、別のプロセスとしてクライアント装置１１０で実行する。これら別の実施例の一部では、測定値データ構造１１８は、プロキシサーバ１２４のメモリまたは記憶装置に記憶される。
【００２６】
図１に示すように、クライアント側の性能の測定値はサーバ装置１０２に返され、記録された測定値のログ１９３に記憶される。測定値をサーバで記録するためのいくつかの方法を以下に述べる。測定された性能を分析し、それに対応するための１つまたは複数のプロセス１９４がサーバ装置１０２上で実行しているのが示される。プロセス１９４によって行なわれる分析は、１つまたは複数のクライアント装置の傾向を判定するステップを含んでもよい。応答は、アプリケーション管理者に、性能が何らの予め確立された性能のしきい値レベルを下回っていることを通知するステップを含んでもよい。図１に示すように、記録された測定値に基づく情報がリレーショナルデータベースなどの測定値データベース１９６に記憶され、分析および応答プロセス１９４を支援する。別の実施例では、ログ１９３に記録された測定値、または分析および応答プロセス１９４、もしくはデータベース１９６、または何らかの組合せが、特別なプロキシサーバ１２２などのネットワークに接続された１つまたは複数の装置にあり、アプリケーション１０４を提供するサービスプロバイダの利益となるように制御される。
【００２７】
機能の概要
図２は、一実施例によるクライアント側の性能に対する応答を制御するための方法２００を示すフローチャートである。一実施例によると、図１のインスツルメント挿入プロセス１０６は、図２に説明されるステップを行なう。たとえば、インスツルメント挿入プロセス１０６を実行するウェブサーバまたはサーブレットは、図２のステップを行なう。
【００２８】
ステップ２０２では、アプリケーションによって作成された項目が途中で捉えられる。実施例によっては、ウェブサーバは、アプリケーションによって作成された項目を途中で捉えるようにプログラムされる。また実施例によっては、ウェブサーバに付加されるサーブレットが項目を途中で捉える。ウェブ項目が特別なプロキシサーバ１２２にキャッシュされてからネットワーク上で伝送される実施例では、キャッシュするプロセスが項目の変更を行なうように変更される。
【００２９】
キャッシュに基づく実施例では、元々の項目は、元々の出所からキャッシュに向かい、次に、キャッシュから１つまたは複数の目的地に向かう。項目の変更は、項目がキャッシュに記憶される前、項目がキャッシュに記憶されている間、または項目がキャッシュから目的地に送られるたびに行なうことができる。一実施例では、元々の出所から送信された後であって、かつクライアント装置１１０に送信される前に、項目はプロキシサーバ１２４にキャッシュされる。
【００３０】
途中で捉えた項目を変更するべきかの判定
実施例によっては、途中で捉えられた項目はすべて変更され、ステップ２０４は行なわれない。しかしながら、一般に、途中で捉えられた項目のいくつかにのみ変更を行なうことが有利である。
【００３１】
ステップ２０４では、項目を変更する条件が満たされているかが判定される。たとえば、ウェブサイトが、画像、映像ストリームおよび音声ストリームのデータに関してＨＴＭＬページを作成すると仮定する。画像、映像ストリームおよび音声ストリームはウェブページ自身から別々に送られる。対象の性能がページを完全にロードするための時間である場合、コードをページに添付すればよく、別々に送信されるページの各要素に添付する必要はない。
【００３２】
別の例では、サービスプロバイダは、アプリケーションでのエラーの発生時に送られるページをロードするのにかかる時間には関心がないことがあり得るため、プロセス１０６は途中で捉えられた各項目がエラーのページであるかを判定し、エラーのページにはインスツルメントを取り付けない。
【００３３】
別の例では、アプリケーションによって生成される項目のうちのある割合にのみインスツルメントを取り付けることで、性能の統計的な測定を実現することができる。この場合、アプリケーションによって生成されたいくつかの項目のうちの１つにのみインスツルメントが取り付けられる。たとえば、プロセス１０６は、途中で捉えた項目の１パーセントのみを変更するように構成することができる。そのような統計的なサンプリングでは、途中で捉えた項目を変更すべきかの判定に使用される１つの要因は、統計的なサンプリングスケジュールである。たとえば、生成され、１つまたは複数のクライアントに送られる項目の数が計数される。計数は、途中で捉えられた項目のサンプルの１％の１００番目ごとの計数などのサンプリングスケジュールと比較される。またはこれに代えて、プロセス１０６は、項目を選択して、ある率で変更する（たとえば、１分につき１つの項目を変更する）ように構成してもよい。
【００３４】
一実施例では、途中で捉えた項目を変更すべきかの判定に使用される１つの要因は項目の種類であり、これは、項目に関連付けられる汎用インターネットメール拡張（Multipurpose Internet Mail Extension;ＭＩＭＥ）によって示される。ＭＩＭＥの種類は、項目の残りのデータの前に来るヘッダフィールドで識別される。たとえば、グラフィックインターチェンジフォーマット（Graphic Interchange Format;ＧＩＦ）画像は、ＭＩＭＥの種類が「image／gif」であり、プレーンテキストは、ＭＩＭＥの種類が「text」である。一実施例では、特定のＭＩＭＥの種類の項目のみが変更される。
【００３５】
別の実施例では、特定の項目を変更すべきかの判定に使用される要因は項目の名前を含む。たとえば、ウェブページは、ウェブ上のページを探すために参照として使用されるユニバーサルリソースロケータ（Universal Resource Locator;ＵＲＬ）名を有する。一実施例では、ある特定の文字列と合致するページ名を有する項目のみが変更される。定型の文字列操作表現を使用して所望の合致を特定してもよい。たとえば、「catalog」という言葉を含むＵＲＬは、すべて「*catalog*」という表現で特定される。
【００３６】
ステップ２０６では、項目を変更する条件が満たされるかが判定される。たとえば、ＭＩＭＥの種類が「text」であるかが判定される。別の例では、ＵＲＬが表現「*catalog*」に整合するかが判定される。また別の例では、カウンタが余りなしに１００で割切れるかが判定される。そうである場合、制御はステップ２０８に移り、項目を変更する。そうでない場合、制御はステップ２２０に移り、変更されない項目がクライアントプロセスに送られる。
【００３７】
ステップ２０８では、項目は変更され、クライアント装置に性能を測定させ、結果としての測定値に基づいて動作させるコードが挿入される。ステップ２０８は後のセクションで詳細に述べる。
【００３８】
ステップ２１０では、変更された項目がクライアントプロセスに送られる。
【００３９】
ステップ２２０では、変更されない項目がクライアントプロセスに送られる。
【００４０】
例示的な項目
図３に示される例示的な項目を使用し、例によって、この発明の実施例を以下に説明する。図３は、サーバ装置で作動する仮定のアプリケーションによって作成される例示的な項目がクライアント装置に現われるのを示すブロック図である。この例では、項目は、ウェブブラウザによってクライアント装置の表示装置のブラウザウインドウ３６０に呈示される４つのフレーム３６２ａ、３６２ｂ、３６２ｃ、３６２ｄのフレームセットである。ウェブブラウザはクライアントプロセスである。各フレームは１つのＨＴＭＬページを保持する。ウェブブラウザはカーソル３６１も表示し、これはクライアント装置のキーまたは位置指示装置、もしくはその両方を用いることでウェブブラウザのユーザが操作した結果の表示装置上での位置を示す。
【００４１】
第１のフレーム３６２ａ内のＨＴＭＬページは、テキスト領域３６４およびユーザがデータを入力できるフォーム３７０などのいくつかのウェブページ要素を含む。第１のフレームは、リンク３６６と呼ばれるいくつかのウェブページ要素も含む。ユーザがリンク上にカーソル３６１を位置付けてクリックする（たとえば、クライアント装置上のキーを押す）ことでリンクを選択すると、ウェブブラウザに配信された項目のリンクに関連付けられるＵＲＬアドレスにあるネットワーク上の別のウェブページに対する要求が生成される。リンクは強調された記述テキストまたはボタンとして表示される事が多く、項目内の関連付けられるＵＲＬアドレスは、表示装置に示されないことが多い。たとえば、リンク３６６ａは、テキスト領域３６４の強調されたテキストであり、リンク３６６ｂ、３６６ｃ、３６６ｄは、分離され、強調される文字列として呈示され、リンク３６６ｅは、「次へ（NEXT）」と表示されたボタンとして呈示される。関連付けられるＵＲＬにある別のウェブページは、既に表示されているＨＴＭＬページを生成した同じアプリケーションによって生成される別のＨＴＭＬページであることが非常に多い。
【００４２】
第１のフレーム３６２ａ内のフォーム３７０は、３つのウェブページ要素、つまり、２つの入力フィールド３７２ａ、３７２ｂおよび「サブミット（SUBMIT）」と表示されたボタンを含む。ユーザは、１つの入力フィールド上にカーソルを動かしてクリックすることで、入力フィールド３７２ａ、３７２ｂのうちの１つを選択する。次に、ユーザは、クライアント装置のキーを押すことで選択したフィールドにデータを入力する。ユーザは、入力されたデータに満足するまで、繰返し選択し、フィールドにデータを入力することができる。満足すると、ユーザはカーソルをサブミットボタン上に動かし、クリックする。サブミットボタンのクリックに応答して、ブラウザは入力フィールド３７２ａ、３７２ｂのデータをネットワーク上でアプリケーションに送る。データを受取ったことに応答して、アプリケーションは、入力に基づいてサービスを進行させ、付加的なＨＴＭＬページおよびフレームセットを生成することが多い。
【００４３】
例示的な性能
図３に示される例示的な項目を提供するサービスプロバイダは、ウェブブラウザのユーザが示されるフレームセットと対話する際によい性能を得られることを望んでいる。この例では、サービスプロバイダは性能の２つの基準に関心がある。第１の基準は、リンクまたはサブミットボタンをクリックしてから、ウェブブラウザがブラウザのウインドウに次のフレームセットを完全にレンダリングするまでの間に、ユーザによって知覚される応答時間である。第１の基準は、ユーザによって知覚されるウェブサイトの速さを示す。この応答時間が知覚不能かまたは数秒未満である場合、この基準による性能は優れている。
【００４４】
第２の基準は、ブラウザによってフレームセットがレンダリングされてから次のリンクまたはサブミットボタンがクリックされるまでのカーソルの動きの数である。この基準は、ユーザが項目とやり取りするのに費やした労力をある程度示す。一般に、カーソルの動きが多いほど、ユーザによって費やされる労力は大きい。カーソルの動きが少なければ、この基準による性能は優れている。
【００４５】
従来のシステムでは、ユーザによって知覚される応答時間もカーソルの動きの数も容易にサーバに報告されないため、どちらもサービスプロバイダは容易に利用することはできない。
【００４６】
例示的な性能情報は、サービスプロバイダにとってさまざまな面で価値がある。たとえば、サービスプロバイダがネットワークまたは仮想専用線（ＶＰＮ）でアプリケーションをホストしている場合、最低限度の許容性能を示したサービスレベル合意がある場合が多い。ユーザの知覚する反応時間の基準が利用できれば、サービスプロバイダは、ある所与の数のユーザの応答時間に関してサービスレベル合意を表現し、合意に準拠しているかを監視するためにサービスレベルの報告を行なうことができる。
【００４７】
応答時間の測定値によって、サービスプロバイダは、性能が許容不可能なレベルまたは準拠しないレベルに低下する前に、たとえば、同じ項目およびクライアント装置の応答時間の増加などの、徐々に性能が低下する傾向を検出することができる。
【００４８】
さらに、クライアント装置に相互に関連する応答時間についての情報によって、サービスプロバイダは、どのクライアント装置に異常な応答時間の問題があるかをユーザ組織に報告することができる。たとえば、同時に作動している装置の大半が７秒で受取り、レンダリングをしているある特定のフレームセットの受取りおよびレンダリングに、ある特定のクライアント装置、装置Ｘが、繰り返し４２秒の応答時間を示す場合、装置Ｘにはおそらく問題がある。そのような報告によって、ユーザ組織は、装置Ｘまたはそのネットワーク接続、もしくはその両者に的を絞って調査を行なうことができ、修正動作を行なうこともあり得る。
【００４９】
応答時間は、病的なレンダリングの問題がある項目を特定するために使用することもできる。サービスプロバイダは、その項目に的を絞って再設計することができる。同様に、カーソルの動きの数を使用して、ユーザが過度にカーソルをあちこちに動かすことに繋がる混乱を招く配置のある項目を特定することができる。サービスプロバイダは、その項目に的を絞って再設計することができる。
【００５０】
応答時間に関連付けられるブラウザの種類およびバージョンについての補助的なデータとともに、サービスプロバイダは、ブラウザおよびバージョンのある特定のセットに限られたレンダリングの問題を特定することができる。次に、サービスプロバイダは、ユーザ組織の活動に好適なブラウザのアップグレードをユーザ組織に知らせることができる。また、サービスプロバイダは、特定のセットに属するブラウザのバージョンに対して、短い応答時間で送信およびレンダリングされるより単純な項目である第２のバージョンの項目を開発することもできる。項目に２つのバージョンがあれば、サービスプロバイダは、ユーザ装置で検出されたブラウザのバージョンがある特定のセットの一員である場合、第２のバージョンの項目を生成して項目を動的に適合させることができる。
【００５１】
応答時間の測定値によって、サービスプロバイダは、性能が突然低下した場合の手順を確立することもできる。たとえば、応答時間の急激な増加に応答して、サービスプロバイダは、サーバまたはクライアントに、ネットワークのトラフィックを減らすかまたは転送する手順、もしくはシステム管理者に通知する手順を起動させることができ、または、サーバに容易に送信またはレンダリングすることのできる単純なバージョンの項目を生成させることができる。
【００５２】
応答時間の測定値によって、サービスプロバイダはサーバ側の性能の計量値を診断し、これにフィルタをかけることができる。サービスプロバイダは、通常、ウェブサイトを支援するサーバのシステムの演算リソースの使用および性能を定量化する大量の計量値を集める。そのような計量値は数百にも上ることがあり、たとえば、いくつかの構成要素の各々についての中央処理ユニットの使用、メモリの使用、ディスクの使用、データベース−バッファ−キャッシュの使用等を含む。さまざまなときに、これらの計量値のいくつかが、心地よい動作のしきい値を上回る急激なピークを形成するなど、スパイクを形成する。すべてのスパイクがユーザによって知覚される応答時間に影響するわけではない。応答時間の測定値を使用して、サーバ側の性能のスパイクと知覚可能な応答時間の影響との間の相互的な関係を検出することができる。次に、サービスプロバイダは、スパイクがクライアントプロセスのユーザに最も重大な影響を与えている構成要素およびリソースの容量を増加させるか、またはその使用を低減することに注意および労力を集中することができる。
【００５３】
例示的な性能インスツルメンテーション
この発明の一実施例によると、クライアント側の性能を測定し、結果的な測定値に応答するため、アプリケーションによって作成された項目にコードが挿入される。一実施例によると、ユーザがページを選択してから、そのページが完全にレンダリングされるまでの遅延（「クリックしてから表示されるまでの時間（click to eyeball time）」）は以下の２つのステップのプロセスを使用して測定される。
【００５４】
（１）  第１のコードのセットが第１のウェブページに挿入される。第１のコードのセットは、第１のウェブページ上で制御に関連付けられ、第２のウェブページを要求する。コードの第１のセットは、制御が選択されたときに実行される。第１のコードのセットは制御が選択された時間を記録する。
【００５５】
（２）  第２のコードのセットが第２のウェブページに挿入される。第２のコードのセットは、第２のウェブページが完全にレンダリングされたときに実行される。コードの第２のセットは、第２のウェブページが完全にレンダリングされた時間を記録する。
【００５６】
コードの第１のセットによって記録された時間と、コードの第２のセットによって記録された時間との差が、第２のウェブページのクリックしてから表示されるまでの時間である。
【００５７】
多くの実施例では、第１のコードのセットおよび第２のコードのセットの両方がアプリケーションによって生成された各ウェブページに挿入される。
【００５８】
クリックしてから表示されるまでの時間およびイベント計数の測定
一実施例では、性能測定インスツルメントが、ユーザがリンク（サブミットボタン）をクリックしたときのサブミット時間と、次のフレームセットがウェブブラウザにレンダリングされたロード時間との差として、ウェブページのクリックしてから表示されるまでの時間を判定する。サブミット時間は、図４を参照にして後述するように、ユーザがリンクまたはサブミットボタンをクリックしたときにウェブブラウザによって呼出される第１のインスツルメントイベントハンドリングルーチンで判定される。ロード時間は、図４Ｂを参照してさらに詳細に説明されるように、フレームセットがレンダリングされたときにウェブブラウザによって呼出される別のインスツルメントイベントハンドリングルーチンで判定される。
【００５９】
上述のクリックしてから表示されるまでの時間の測定に加え、ウェブページがロードされてから次のウェブページが要求されるまでに、ウェブページ上の項目を活性化することおよびウェブページ上の項目を変更することに関連付けられるイベントを計数することで、性能測定インスツルメントがカーソルの動きの数を判定する例を説明する。カウンタは、図４Ｂに関してさらに詳細に説明するように、各フレームセットがレンダリングされたときにウェブブラウザによって呼出される第２のインスツルメントイベントハンドリングルーチンで無効な値にリセットされる。カウンタの値は、図４Ｄを参照してさらに詳しく説明するように、ユーザがウェブの要素を変更またはウェブの要素に焦点を当てたときにウェブページによって呼出される第３のインスツルメントイベントハンドリングルーチンに記憶される。
【００６０】
一実施例によると、サブミット時間、ロード時間およびカウンタの値の測定値は、クッキーとも呼ばれる初期設定ファイルに記憶される。クッキーは、ＨＴＭＬページ内のスクリプトに応答してクライアント装置のウェブブラウザによって作成されるデータ構造である。ウェブブラウザは、次の要求とともに、ＨＴＭＬページを提供したのと同じサーバにクッキーを自動的に送る。
【００６１】
インスツルメントイベントハンドラ
一実施例によると、性能測定インスツルメントの第１の部分は、インスツルメントを含むウェブページをブラウザが受取るとすぐにブラウザによって実行される。実行されると、図５Ａを参照してさらに詳しく後述するように、「到着時実行」コードが各ページを記述するＨＴＭＬステートメントを変更して、フレームセット、ウェブページおよびウェブページの要素を記述するＨＴＭＬステートメントのうちの少なくとも一部に「インスツルメントイベントハンドラ」を関連付ける。
【００６２】
ウェブブラウザは、ウェブページ要素を備えた１つまたは複数のウェブページのフレームセットをクライアント装置の表示装置にレンダリングし、ウェブページまたはウェブページ要素に関連付けられる、ユーザまたはクライアント装置のオペレーティングシステムによる動作に応答する。ウェブページおよびウェブページの要素は、ＨＴＭＬのステートメントで記述される。ウェブブラウザの応答は、標準の挙動を提供する組込みのルーチンによって提供される。たとえば、ウェブブラウザは、カーソルの付近のウェブページ要素を強調することでユーザのカーソルの動きに応答し、リンクに関連付けられるＵＲＬにＨＴＭＬのステートメントで要求を送ることでユーザのリンクのクリックに応答する。
【００６３】
ウェブブラウザによって、ウェブページのプロバイダは、ウェブページおよびウェブページ要素に関連付けられる動作に対して付加的な挙動を提供することができる。ブラウザはイベントと呼ばれるデータ構造を生成し、これはウェブページまたはウェブページ要素に関連付けられる動作を記述する。ウェブブラウザは、イベントハンドラと呼ばれるプロセスにパラメータとしてイベントを渡し、これらイベントハンドラはウェブページまたはウェブページ要素を規定するＨＴＭＬステートメント内に記載される。イベントハンドラを記述するコードも、ウェブページによって直接提供されるか、またはコードを含むファイルへの参照で提供される。あるウェブページまたはウェブページの要素に対して付加的な挙動が所望でない場合、そのページまたは要素に対するＨＴＭＬステートメント内にはイベントハンドラは記載されない。
【００６４】
ある実施例によると、インスツルメントは、１つまたは複数のウェブページまたはウェブページ要素とともに記載された１つまたは複数のインスツルメントイベントハンドラを含み、クライアント側の性能の測定に繋がる挙動を提供する。
【００６５】
次に、変更された項目のコードに含まれるインスツルメンテーションイベントハンドラを図４Ａ、４Ｂ、４Ｃおよび４Ｄに関して説明する。インスツルメンテーションイベントハンドラの説明に続いて、図５Ａおよび５Ｂを参照してインスツルメンテーションイベントハンドラをウェブページの要素に関連付けるプロセスを説明する。
【００６６】
リンクをクリックするか、またはフォームのサブミットボタンをクリックすることで、ユーザはサービスの要求を開始する。これ以降、サブミットイベントは、リンクのクリック、およびフォームのサブミットボタンのクリックの両方を指すのに使用される。ネットワーク上のアプリケーションの応答時間のユーザによる知覚は、ユーザがサービスの要求を開始したときに始まる。図４Ａは、一実施例による、クライアントに送られる変更された項目に含まれるサブミットイベントハンドラ４００を示すフローチャートである。イベントハンドラ４００は、サブミットイベントに関連付けられる。ウェブページ要素をこのイベントハンドラに関連付けるプロセスは、図５Ｂに関して後述する。ウェブブラウザのユーザがダウンロードしたページの閲覧中にカーソルをリンクに動かしクリックするか、またはフォームのサブミットボタンをクリックすると、ルーチンが呼出され、これが図４Ａのステップを行なう。このイベントハンドラの１つの目的は、ユーザがサービスの要求が行なわれたと知覚したときの時間を記録することである。
【００６７】
ステップ４０２では、インスツルメントイベントハンドラを実行するウェブブラウザの種類およびバージョンが判定される。ウェブブラウザの種類を判定するのは、クライアント装置の１つまたは複数のプロセッサに上述のステップを行なわせるステートメントは、ステートメントを実行するウェブブラウザにある程度依存するためである。たとえば、ユーザがカーソルおよび装置キーを操作したときにブラウザによって生成されるイベント名は、ブラウザによってさまざまであり得る。また、ブラウザが新しければ、インスツルメンテーションを実現するコードはそのウェブブラウザでテストされていないことがあり得る。そのような状況では、コードが実行されない方がウェブブラウザのユーザにとって安全である。
【００６８】
ステップ４０３では、コードがテストされたブラウザであるかを判定する。テストされていなければ、制御はステップ４１０に移り、クリックイベントを取扱うための元々の方法が呼出される。ステップ４０２および４０３は、図５Ａに関して後述されるように、到着時実行コードがクライアント装置のプロセッサに類似のチェックを行なわせる場合には行なわれない。
【００６９】
ステップ４０４では、現在の時間が判定される。現在の時間は、応答時間の測定の一環として、サービスの要求が開始された時間を規定するために使用される。
【００７０】
ステップ４０６では、サブミットイベントに関連する性能の測定値がメモリのデータ構造または永続的記憶装置に記憶される。たとえば、現在の時間は、サブミット時間としてクッキーに記憶される。
【００７１】
ステップ４０８では、補助的なデータがデータ構造に記憶される。補助的なデータは、性能の問題を診断し、そのような問題の解決策を設計するために後続の分析で使用される。たとえば、ブラウザの種類およびバージョンは補助的なデータとして記憶される。上述のように、応答時間に関連付けられるブラウザの種類およびバージョンについての補助的なデータとともに、サービスプロバイダはブラウザおよびバージョンの特定のセットに限定される項目のレンダリングの問題を識別することができる。別の例では、クライアント装置のプロセッサおよびクロック速度が補助的なデータとして記憶される。
【００７２】
ステップ４１０では、サブミットイベントに対する元々のイベントハンドラがあれば呼出される。ブラウザは、リンクに関連付けられるイベントハンドラを実行する前でなく、ユーザがリンクをクリックしたときに自動的に新しいページを要求する。同様に、ブラウザは、サブミットボタンに関連付けられるいずれかのイベントハンドラを実行する前でなく、サブミットボタンがクリックされたときに自動的にフォームからデータを送る。そのようなサブミットイベントハンドラは、サブミットイベントが発生したときに行なう付加的な機能を提供する。サブミットイベントハンドラ４００は、アプリケーションによって作成された元々の項目のリンクまたはサブミットボタンに元々関連付けられるいずれかのサブミットハンドラを置換える。したがって、ステップ４１０では、リンクまたはサブミットボタンに関連付けられるサブミットイベントに対してアプリケーションによって提供された特別の機能が、元々のイベントハンドラを呼出すことで復元される。アプリケーションがリンクまたはサブミットボタンに対してサブミットイベントハンドラを含まない場合、ステップ４１０は行なわれない。ウェブブラウザは、リンクに関連付けられる新しいページを自動的に要求するか、またはフォームから自動的にデータを送るなどの組込みのステップを行なう。
【００７３】
ネットワーク上のアプリケーションの応答時間のユーザによる知覚は、新しいフレームセットなどの新しい項目が完全にロードされたときに終わる。図４Ｂは、一実施例による、クライアントに送られる変更された項目に含まれるロードイベントハンドラ４２０を示すフローチャートである。イベントハンドラ４２０は、ブラウザウインドウロードイベントとも呼ばれるフレームセットロードイベントに関連付けられる。このハンドラへのウインドウレベルロードイベントの関連付けは、図５Ａに関して後述する。ウインドウロードイベントを使用しない実施例では、図５Ｂに関して後述するように、ページロードイベントが用いられる。したがって、ブラウザウインドウが完全にダウンロードされ、クライアント装置の表示装置にレンダリングされると、ルーチンが呼出され、これが図４Ｂのステップを行なう。このイベントハンドラの１つの目的は、ユーザが、新しい項目がクライアント装置の表示装置にレンダリングされたと知覚した時間、つまり、応答時間の測定が完了した時間を記録することである。実施例によっては、このイベントハンドラの別の目的は、何らかの態様で満足のいかない応答時間に応答することである。
【００７４】
ステップ４２２および４２３は、図４Ａのステップ４０２および４０３に対応する。ステップ４２２および４２３は、コードを実行しているブラウザがそのコードでテストされていない場合に、インスツルメンテーションイベントハンドラの他のステップを行なうのを省く。ステップ４２２および４２３は、図５Ａに関して後述するように、到着時実行コードが類似のチェックを示す実施例では省略される。
【００７５】
ステップ４２４では、フレームセット内のすべてのページがロードされたかが判定される。実施例によっては、ステップ４２０は、ページがロードされるたびにウェブブラウザによって行なわれる。図３に示されるように、項目の中にはウェブブラウザにいくつかのページをフレームセットの各フレーム内に１つずつ同時に呈示させるものがある。ユーザによる応答時間の知覚は、フレームセットのすべてのフレームにページをロードすることに基づく。ステップ４２４は、ロードされたばかりのページがフレームセット内の最後のページであるかを確認する。たとえば、ステップ４２４では、前にロードされたページの数に現在ロードされるページを足したものが、フレームセット内のフレーム数と等しいかが判定される。フレームセット内のフレーム数は、アプリケーションから送られる項目に含まれ、図５Ａに関して後述するように、到着時実行コードに基づいてクライアント装置のプロセッサによって捕捉される。以前にロードされたページ数はページカウンタに維持される。図４Ｃに示されるように、ページカウンタは、入力バッファからページがアンロードされて次のページのために道が空けられ、かつブラウザがアンロードイベントを発行するたびに増分される。
【００７６】
ステップ４２４で、ロードされたばかりのページがフレームセット内の最後のページでないと判定された場合、制御はステップ４３６に移り、ロードイベントに対する元々の方法ハンドラがあり、かつまだ呼出されていない場合、これが呼出される。ウインドウロードイベントを使用しない別の実施例では、図５Ｂに示すように、ステップ４２０を行なう前に元々のページロードイベントハンドラが呼出される場合、ステップ４３６は省略できる。ステップ４３６が省略される場合、またはステップ４３６が完了した後、制御はウェブブラウザの組込みの方法に移り、ユーザのカーソルおよびキーの操作の監視が進められる。
【００７７】
ステップ４２４で、ロードされたばかりのページがフレームセット内の最後のページであると判定されると、制御はステップ４２６に移り、現在の時間が判定される。現在の時間は、応答時間の測定の一環として、新しいフレームセットがレンダリングされ、ユーザに見られた時間を規定するために使用される。
【００７８】
ステップ４２８では、ロードイベントに関連する性能の測定値が、メモリのデータ構造または永続的な記憶装置に記憶される。たとえば、現在の時間は、ロード時間としてクッキーに記憶される。別の例では、応答時間は、ロード時間とサブミット時間との差として計算され、応答時間はクッキーに記憶される。
【００７９】
性能測定値に対するクライアント側の応答
性能の測定を行なうことに加え、途中で捉えられた項目に付加されるインスツルメンテーションは、性能の測定に基づいて動作を行なうように構成してもよい。たとえば、ステップ４３０では、測定された性能が最低限度の性能のしきい値と比較される。性能が最低限度の性能のしきい値を下回る場合、制御はステップ４３２に移り、低下した性能に応答する。たとえば、最低限度の性能のしきい値が最大許容応答時間と関連付けられる場合、最大応答時間を上回る応答時間は、最低限度の性能のしきい値を下回る性能に対応する。
【００８０】
制御がステップ４３２に移ると、コードはウェブブラウザに低下した性能に対応させる。たとえば、ステップ４３２では、ブラウザは、応答時間が最大許容応答時間を超えているという通知をユーザ組織に送る。実施例によっては、サービスプロバイダのシステム管理者に通知が送られる。また実施例によっては、応答時間が過剰であることをユーザに知らせ、ユーザにシステムについてのトラブル報告を記録するように促すか、またはより大きなキャッシュまたは大きな帯域幅などのより多くのリソースを入手するように促すダイアログボックスがウェブブラウザのユーザに呈示される。一実施例では、より高速なインターネットアクセス技術の広告などの広告がユーザに示される。実施例によっては、通知は、ネットワーク上で実行するサーバなどの別のプロセスにメッセージを送り、何らかの動作を自動的に行なうことを含む。そのような自動的な動作は、アプリケーションによって作成された項目を容易に通信およびレンダリングすることのできるように小型または単純な項目に改訂することを含む。実施例によっては、クッキー内の性能測定値は、通知ステップ中に他のプロセスに送られる。
【００８１】
ステップ４３０および４３２は、後述するように、しきい値を下回る性能に対する応答が、クライアントでなくサーバによって、サーバに返される性能の測定値に基づいて行なわれる場合に省略される。
【００８２】
性能の測定値の報告
性能測定を行なうことに加え、途中で捉えられた項目に付加されるインスツルメンテーションは、性能の測定値を何らかの実体にネットワーク上で報告するように構成してもよい。実体は、たとえば、ウェブサーバか、または性能が測定されているサービスのサービスプロバイダによって制御されるアプリケーションであってもよい。
【００８３】
性能の測定値をサービスプロバイダに通信するためにさまざまな技術が使用され得る。たとえば、ステップ４３４では、データを含まないダミーの画像ファイルに対する要求がサーバに行なわれる。たとえば、サーバ側にDummy.gifの要求が行なわれる。この要求は、ウェブブラウザに性能の測定値を備えたクッキーを自動的にサーバに送らせる。ファイルDummy.gifはデータを含まないため、クライアント装置の表示装置には何も追加されず、このステップはユーザに対して透過的である。別の実施例では、ステップ４３４は省略され、クッキーは、ユーザがサーバから新しいページを要求したときなど、後にサーバに送られる。ステップ４３４またはそれに相当するものが省略されると、性能の測定値のサーバに対する報告は、後の定められない時間に行なわれるため、怠惰な報告と呼ばれる。
【００８４】
次に、制御はステップ４３６に移り、元々のウインドウロードイベントハンドラが呼出される。ステップ４３６が省略される場合、またはステップ４３６が完了した後、制御はウェブブラウザの組込みの方法に移り、カーソルおよびキーのユーザによる操作の監視が行なわれる。
【００８５】
性能測定値に対するサーバ側の応答
実施例の中には、サービスプロバイダのためにネットワークに接続される装置上で実行するプロセスが最低限の許容性能のしきい値を下回る性能を検出し、それに応答するものもある。たとえば、サーバ装置１０２上で実行する性能分析および応答プロセス１９４は、しきい値を下回る性能を自動的に検出し、それに応答して何らかの動作を行なう。サーバ側の応答は、図６に関して後述する。
【００８６】
アンロードイベントハンドラ
図４Ｃは、一実施例による、クライアントに送られる変更された項目に含まれるアンロードイベントハンドラ４４０を示すフローチャートである。図５Ａに関して後述される方法などの方法によると、イベントハンドラ４４０は、アンロードイベントに関連付けられる。入力バッファからページがアンロードされ、次のページのための道が空けられると、ルーチンが呼出され、これが図４Ｃのステップを行なう。このイベントハンドラの目的は、実際にダウンロードされたフレームセットのページ数を計数することである。
【００８７】
ステップ４４２および４４３は、図４Ａのステップ４０２および４０３に対応する。ステップ４４２および４４３は、コードを実行しているブラウザがそのコードでテストされていないとき、インスツルメンテーションイベントハンドラの他のステップを行なうのを省く。ステップ４４２および４４３は、図５Ａに関して後述されるように、到着時実行コードが類似のチェックを示す場合に省略される。
【００８８】
ステップ４４６では、ページカウンタが増分される。カウンタは、メモリまたは永続的な記憶装置にあってもよい。カウンタが検索され、カウンタに記憶される値が１ずつ増分され、新しい値が記憶される。新しいフレームセットが要求されるときなど、カウンタがリセットされている場合、カウンタは検索されるときにゼロなどの無効な値を有する。カウンタの値が無効であるとき、ステップ４４６はカウンタの新しい値を「１」にセットする。実施例によっては、ページカウンタの値はクッキーに記憶される。
【００８９】
ステップ４４８では、アンロードイベントに対する元々のイベントハンドラがあれば呼出される。ステップ４４８の完了後、制御はウェブブラウザの組込みの方法に戻り、ユーザの操作およびシステムを監視し、後続のイベントが生成される。
【００９０】
カーソルイベントハンドラ
ユーザによるカーソルの動きは、クライアント装置の表示装置上に呈示される項目上でユーザによって費やされる労力に関連する。カーソルがブラウザウインドウ上で動かされると、通過したウェブページ要素を代わる代わる活性化する。たとえば、図３に関して、カーソル３６１が図示の位置からテキスト領域３６４、リンク３６６ａ、リンク３６６ｂ、フォーム３７０、入力フィールド３７２ｂに動かされると、これらウェブページ要素の各々は、ユーザがそれらのうちのどれにも一時停止しないか、またはクリックしない場合でも、順番に活性化する。カーソルがウェブページ要素を活性化するたび、ウェブブラウザはその要素に対してフォーカスイベントを発行する。これらイベントの計数は、カーソルの動きの測定値である。また、ユーザがウェブ要素を選択しキーを押すなどしてウェブページ要素を変更すると、ウェブブラウザは、その要素に対して変更イベントを発行する。たとえば、ユーザがカーソルを動かし、選択することによって入力フィールド３７２ｂを選択すると、フィールド３７２ｂに対してフォーカスイベントが発行され、入力フィールド３７２ｂに対してクリックイベントが発行される。ユーザが、たとえば、数字「７」のキーをタイプすると、入力フィールド３７２ｂに対して変更イベントが発行される。ユーザが続いて数字「３２１」のキーをタイプすると、ウェブブラウザは、入力フィールド３７２ｂに対して、さらに３つの変更イベントを発行する。呈示された項目でユーザによって費やされた労力の合計の測定値は、フォーカスイベントおよび変更イベントを組合せることで得られる。これ以降、フォーカスイベントおよび変更イベントをまとめてカーソルイベントと称する。実施例によっては、リンクまたはサブミットボタンではないウェブページ要素のクリックは、カーソルイベントに含められる。
【００９１】
図４Ｄは、一実施例による、クライアントに送られる変更された項目に含まれるカーソルイベントハンドラ４６０を示すフローチャートである。イベントハンドラ４２０は、図５Ｂに関して後述されるように、フォーカスイベントおよび変更イベントに関連付けられる。したがって、ユーザがウェブページ要素上にカーソルを動かすか、または入力フィールドの値を変更すると、カーソルイベントが発行される。このイベントハンドラの１つの目的は、ページがレンダリングされたときから新たなページが要求されるときまでの間のカーソルイベントを記録することである。
【００９２】
ステップ４６２および４６３は、図４Ａのステップ４０２および４０３に対応する。ステップ４６２および４６３は、コードを実行しているブラウザがそのコードでテストされていないとき、インスツルメンテーションイベントハンドラの他のステップを行なうのを省く。ステップ４６２および４６３は、図５Ａに関して後述される実施例のように、フレームセットまたはページのロード中にすぐに実行されるコードの第１の部分が同様のチェックを行なう場合に省略される。
【００９３】
ステップ４６６では、カーソルの動きのカウンタが増分される。カウンタはメモリまたは永続的な記憶装置にあってもよい。この実施例では、カウンタはクッキー内に記憶される。カウンタが検索され、カウンタに記憶される値が増分され、新しい値が記憶される。実施例によっては、カウンタは「１」ずつ増分される。また実施例によってはカウンタはフォーカスイベントに対しては「１」ずつ、変更イベントに対しては「２」ずつ増分され、どのような変更を行なうかを決定し、適切なキーを探して押すためのユーザ側の大きな労力を反映する。また別の実施例では、他の増分の値が適用される。新しいフレームセットが要求されるときなど、カウンタがリセットされている場合、カウンタは検索されるとき、値ゼロなどの無効な値を有する。カウンタの値が無効であると、ステップ４６６は、カウンタの新しい値を増分の値、たとえば、フォーカスイベントに対しては「１」、変更イベントに対しては「２」などをセットする。
【００９４】
次に、制御はステップ４６８に移り、元々のカーソルイベントハンドラがあれば呼出す。ステップ４６８の完了後、制御はウェブブラウザの組込みの方法に移り、カーソルおよびキーのユーザによる操作の監視を行なう。
【００９５】
到着時実行コード
図４Ａ、４Ｂ、４Ｃおよび４Ｄは、性能測定コードに含まれるイベントハンドラを示す。これらステップは、ページがロードされる前でなく、ウェブブラウザによる何らかの動作に応答して実行される。図５Ａは、ブラウザが項目内のコードに遭遇するとすぐに、ウェブブラウザがダウンロードされているフレームセットの第１のページに対してロードイベントを発行する前に実行されるステップを示す。一実施例では、コードは、図２のステップ２８０の中で元々の項目のＨＴＭＬステートメントの端部に挿入されるため、ウェブブラウザは元々の項目の後ろでコードに遭遇する。別の実施例では、コードは図２のステップ２０８の中で元々の項目のステートメントの中のＨＴＭＬステートメント、たとえばヘッダタグなどに挿入されるため、ウェブブラウザは元々の項目の一部のステートメントの前でコードに遭遇する。
【００９６】
図５Ａは、図１に示される予め規定された性能測定コード１０８の一実施例による、クライアントに送られる変更された項目に含まれる性能測定コード１０８′を表わすフローチャートの第１の部分である。性能測定コード１０８′は、図４Ａ、４Ｂ、４Ｃおよび４Ｄに示されるインスツルメンテーションイベントハンドラのためのコードを含み、これらインスツルメンテーションイベントハンドラを元々の項目のウェブページ要素に関連付ける。
【００９７】
ステップ５０２および５０４は、図４Ａのステップ４０２および４０３に対応する。ステップ５０２および５０４は、コードを実行しているブラウザがそのコードでテストされていないときに、性能測定コードの他のステップを行なうのを省く。ウェブブラウザがコード１０８′でテストされていない場合、制御はステップ１９０に移り、この方法は終了する。ステップ５０２および５０４を含む実施例では、イベントハンドラ内の対応するステップは省略してもよい。たとえば、ステップ４０２、４０３、４２２、４２３、４４２、４４３、４６２および４６３は、ステップ５０２および５０３を含む実施例では省略される。
【００９８】
ステップ５０６では、インスツルメンテーションイベントハンドラのうちの１つによって書かれた、アプリケーションに対するインスツルメンテーションクッキーが既にクライアント装置にあるかが判定される。ない場合、ダウンロードされているフレームセットは、そのアプリケーションにとって第１のものである。応答時間の測定は、サブミット時間が記憶されることを必要とするため、第１のフレームセットに対して何らかの特別な処理を行なわない限り、第１のフレームセットに対する応答時間は得られない。ステップ５０６で、アプリケーションに対するインスツルメンテーションクッキーが存在しないと判定されると、アプリケーションにとって第１のフレームセットがダウンロードされており、制御はステップ５０８に移り、特別な処理を行なって第１のフレームセットについての応答時間を捕捉する。さもなければ、制御はステップ５１０に移る。実施例によっては、第１のフレームセットを検出するためのステップは含まれない。これらの実施例では、ステップ５０６は省略され、制御はテストされたブラウザに対して無条件にステップ５１０に移る。ステップ５０８によって表わされる特別な処理は、詳しく後述する。
【００９９】
ステップ５１０では、元々の項目に含まれるウェブページ要素に関連付けられる元々のイベントハンドラが得られる。イベントハンドラをウェブページ要素に関連付けることは、イベントハンドラのウェブページ要素への登録と称されることがある。実施例によっては、元々のイベントハンドラは、ウェブブラウザから要求するか、または元々の項目から直接読出すことができる。一部のブラウザでは、イベントハンドラ名はイベントおよびページ要素によって決定される。たとえば、元々のイベントハンドラが、ブラウザウインドウに関連付けられるロードイベントに対して与えられる場合、元々のイベントハンドラは、１つのブラウザに対しては「window.onLoad」と名付けられる。（異なるブラウザでは、イベントハンドラを、たとえば、frameset.onloadなど、他の呼び方をすることがある。）この方法を説明するため、例示的な元々の項目を設けるが、これは図３に示されるフレームセットを作成し、フレームセットに関連するロードイベントに対するwindow.onLoadと呼ばれるイベントハンドラ、およびフレームセットの第１のフレームのページ上のフォーム３７０に関連するサブミットイベントに対するFormA.onSubmitと呼ばれるイベントハンドラを含む。この例では、他の元々のイベントハンドラは設けられない。元々の項目によると、リンク３６６のクリックは、各リンクに関連付けられるＵＲＬアドレスにあるページを要求することで、完全にブラウザによって処理される。
【０１００】
ステップ５１２では、ウインドウおよびページレベルイベントに対する元々のイベントハンドラは、インスツルメンテーションイベントハンドラによって保存かつ置換えられ、インスツルメンテーションイベントハンドラは適切なウインドウおよびページレベル要素に登録される。たとえば、元々のイベントハンドラ「window.onLoad」は、図４Ｂに示されるインスツルメンテーションイベントハンドラ４２０によって置換えられる。図４Ｂに示されるイベントハンドラが「F4B_handler」と名付けられる場合、登録の置換えは、次の形のJava(R)Scriptステートメントで実現される。
【０１０１】
orig_window_load=wondow.onLoad;
window.onLoad=F4B_handler;
「orig_window_load」という名前は、ステップ４３６でインスツルメンテーションハンドラ４２０によって使用される。呼出の形はブラウザによって異なるため、ステップ４３６を行なうためのJava(R)Scriptは次の形である。
【０１０２】
if(browserT=“IE”)orig_window_load();
if(browserT=“NETSCAPE”)orig_window_load(e);
ここで、「browserT」は、検出される実際のブラウザの種類を示す変数であり、たとえば、ステップ５０２では、IEは、INTERNET EXPLORERラウザを示し、NETSCAPEは、NETSCAPEブラウザを示し、ｅは、ウェブブラウザによってwindow.onLoadハンドラに渡されるイベントオブジェクトである。
【０１０３】
例示的な項目のページおよびウインドウレベルには他に元々のイベントハンドラはないため、ステップ５１２では他に登録の置換えは行なわれない。しかしながら、ページレベルのインスツルメンテーションイベントハンドラはページに登録される。例示的な実施例では、図４Ｃに示されるページアンロードイベントに対するインスツルメンテーションイベントハンドラ４４０が使用される。例示的な実施例では、図５Ｂに示されるページロードイベントに対するインスツルメンテーションイベントハンドラ５２０が使用される。図５Ｂに示されるページロードイベントに対するインスツルメンテーションイベントハンドラ５２０が「F5B_handler」と名付けられ、ページアンロードイベントについてのインスツルメンテーションイベントハンドラが「F4C_handler」と名付けられる場合、一実施例のための登録は、次の形のJava(R)Scriptステートメントで実現される。
【０１０４】
frame1.page.onLoad=F5B_handler;
frame1.page.onUnload=F4C_handler;
frame2.page.onLoad=F5B_handler;
frame2.page.onUnload=F4C_handler;
frame3.page.onLoad=F5B_handler;
frame3.page.onUnload=F4C_handler;
frame4.page.onLoad=F5B_handler;
frame4.page.onUnload=F4C_handler;
ステップ５１４では、フレームセット内のフレーム数が元々の項目の情報から判定され、ステップ４２４で使用するために図４Ｂに示されるロードイベントハンドラ４２０に保存される。コードも、クライアント装置にクッキーに記憶されるパラメータに対応するメモリ内のパラメータを無効な値にリセットさせる。たとえば、サブミット時間、ロード時間、カーソルの動きの数を表わす変数は、ゼロにリセットされる。
【０１０５】
次に、コードのこの部分は終了される。続いて、現在のフレームセットの第１のページがロードを終了する。第１のページがロードを終了すると、ウェブブラウザはフレーム１に対してページロードイベントを発行する。図５Ｂのインスツルメンテーションイベントハンドラは、フレーム１に対するページロードイベントに登録されたため、イベントハンドラが呼出される。次に、制御は、図５Ｂに示されるようにステップ５２０に移る。
【０１０６】
図５Ｂは、一実施例による、クライアントに送られる変更された項目に含まれる性能測定コード１０８′を示すフローチャートの第２の部分である。このコードは、図４Ｂに示されるウインドウロードイベントハンドラ４２０の実施例を含むページロードイベントハンドラ５２０のある実施例を含む。この実施例は、ウインドウロードイベントが用いられないときに使用される。ウインドウロードイベントを用いる実施例では、図５Ｂに示されるように、制御はステップ４２０に移るのではなく、ウェブブラウザの組込みの方法に戻る。
【０１０７】
ステップ５２２では、ページロードイベントに対する元々のイベントハンドラがあるかが判定される。あれば、制御はステップ５２４に移り、ページロードイベントに対する元々のハンドラが呼出される。これを行なうのは、アプリケーションの中には、動的に生成された１つまたは複数のウェブページ要素をページイベントハンドラに挿入するものがあるためである。これらハンドラは、たとえば、１つまたは複数のリンクをページに付加させることができる。元々のページロードイベントハンドラを呼出すことで、アプリケーションによって提供されるすべてのウェブページ要素は、制御がステップ５２６に移るときまでにページ上にある。例示的な項目では、元々のページロードイベントハンドラはないため、制御は、ステップ５２６からステップ５２２に直接移る。
【０１０８】
ステップ５２６では、コードはウェブブラウザにページ上の各リンクを調べさせ、インスツルメンテーションハンドラ４００を挿入させて、元々のクリックイベントハンドラを置換える。例示的な項目では、５つのリンク３６６があり、クリックイベントに対する元々のイベントハンドラはない。リンク３６６ａ、３６６ｂ、３６６ｃ、３６６ｄ、３６６ｅが、それぞれ、LinkA、LinkB、LinkC、LinkD、LinkEと識別され、かつインスツルメンテーションイベントハンドラ４００が「F4A_handler」と名付けられる場合、登録は、次の形のJava(R)Scriptステートメントで実現される。
【０１０９】
LinkA.onClick=F4A_handler;
LinkB.onClick=F4A_handler;
LinkC.onClick=F4A_handler;
LinkD.onClick=F4A_handler;
LinkF.onClick=F4A_handler;
ステップ５２８では、コードはウェブブラウザにページ上の各フォームを調べさせ、インスツルメンテーションハンドラ４００を挿入させて、元々サブミットイベントハンドラを置換える。例示的な項目では、１つのフォームがあり、「FormA.onSubmit」と呼ばれるサブミットイベントに対する元々のイベントハンドラを有する。登録の置換えは、次の形のJava(R)Scriptステートメントで実現される。
【０１１０】
orig_form_submit=frame1.FormA.onSubmit
frame1.FormA.onSubmit=F4A_handler.
「orig_form_submit」という名前は、イベントハンドラのステップ４１０でインスツルメンテーションハンドラによる呼出で使用される。呼出の形はブラウザによって異なるため、ステップ４１０を行なうためのJava(R)Scriptステートメントは次の形である。
【０１１１】
if(browserT=“IE”)orig_form_submit();
if(browserT=“NETSCAPE”)orig_form_submit(e);
ステップ５３０では、コードはウェブブラウザにページ上の各要素を調べさせ、インスツルメンテーションハンドラ４６０を挿入させて、元々のフォーカスイベントハンドラおよび変更イベントハンドラを置換える。ハンドラ４６０は、上述のようにカーソルの動きのカウンタを増分させる。例示的な項目では、第１のフレームのページ上の少なくとも１０のウェブページ要素、テキストボックス３６４、５つのリンク３６６、フォーム３７０およびその要素、２つの入力フィールド３７２ならびにサブミットボタン３７４があるが、フォーカスイベントおよび変更イベントに対する元々のイベントハンドラはない。インスツルメンテーションイベントハンドラ４６０が「F4D_handler」と名付けられる場合、登録は次の形のJava(R)Scriptステートメントで実現される。
【０１１２】
ElementA.onFocus=F4D_handler
ElementA.onChange=F4D_handler
ここで、１０のウェブページ要素の各々が「ElementA」と指定された要素を順に置換える。
【０１１３】
実施例によっては、制御は図４Ｂに示されるステップ４２０に移り、図５Ｂに示されるようにそのロードイベントハンドラのステップを続ける。そのような実施例は、異なるフレーム内の１つまたは複数のページのウインドウに対するロードイベントと個々のページに対するロードイベントとの区別をしないブラウザにとっては有用である。
【０１１４】
フレームセットの異なるフレーム内のすべてのページがロードされると、制御は最終的にステップ４２８に移り、応答時間、またはサブミット時間およびロード時間、もしくはその両方をクッキーに記憶する。途中、制御は、図４Ｄに示されるカーソルの動きイベントハンドラ４６０に何度か移り、これはカーソルの動きの計数をクッキーに記憶する。最終的にクッキーは、１つまたは複数のページについての各フレームセットの応答時間およびカーソルの動きを提供する測定値とともにサーバに返される。
【０１１５】
インスツルメンテーションコードの作成
実施例によっては、アプリケーションの開発者は、クライアント側の性能を測定するために、インスツルメンテーションコードを手動で項目に挿入する。しかしながら、図示の実施例では、変更された項目１０７に含まれるコードは、変更の条件が満たされる場合、アプリケーション１０４によって作成された項目１０５に自動的に挿入される。
【０１１６】
例示的な実施例のように、インスツルメント挿入プロセス１０６にとって、所望のインスツルメンテーションがアプリケーションの開発者に対して独立的かつ透過的に自動的に行なわれることは有利である。コード１０８が開発される前に既に作動しているアプリケーションおよび開発されたアプリケーションを含め、サービスプロバイダによって制御されるすべてのサーバ上のすべてのアプリケーションによって作成されたすべての項目に付加的な労力なしにコードを挿入することができることが１つの利点である。
【０１１７】
もう１つの利点は、自動的な挿入によって、すべてのアプリケーションの性能を測定するための一貫したプロセスが提供される点である。各アプリケーションの開発者が別々のプロセスを実施して応答時間などの性能を測定した場合、測定値は必ずしもアプリケーション間で比較できるわけではない。
【０１１８】
インスツルメンテーションの選択肢
上述の例示的な実施例では、インスツルメンテーションコードは、ウェブブラウザに送られる選択されたＨＴＭＬページに挿入されるJAVA(R)SCRIPTTMである。（これ以降、JAVA(R)SCRIPTTMはJava(R)Scriptと称する。）Java(R)Scriptは、ＨＴＭＬページをレンダリングするウェブブラウザによって解釈されるスクリプト言語である。
【０１１９】
ここまではJava(R)Scriptを使用する実施例を説明したが、他の実施例は、クライアント装置に性能を測定させ、結果的な測定値に基づいて動作を行なわせる他の言語の命令を含んでもよい。たとえば、コードは、VisualBasicScript(VBScript)などの、ウェブブラウザによって解釈される別のスクリプト言語を含んでもよい。さらにコードは、NETSCAPETMNAVIGATORTMウェブブラウザから起動されるプラグインアプリケーション、MICROSOFTTMINTERNET EXPLORERTMウェブブラウザから起動されるACTIVEXTMアプリケーション、上述のウェブブラウザの両方から起動されるJAVA(R)TMアプレットおよび他のものなどの、クライアントプロセスから独立して作動するが、クライアントプロセスから起動されるプロセスによって実行される命令を含んでもよい。
【０１２０】
たとえば、コードはJAVA(R)TM（これ以降、Java(R)と称する）を含んでもよい。ウェブブラウザなどの多くのクライアントプロセスは、アプレットでJava(R)コードを受取るように装備される。アプレットのJava(R)ステートメントは、Java(R)仮想マシン（ＪＶＭ）と呼ばれるプロセスによって解釈される。Java(R)アプレットを受取ったことに応答して、クライアントプロセスはＪＶＭが既にロードされていない場合はこれをロードし、ＪＶＭを使用してJava(R)アプレットのステートメントを実行する。Java(R)Scriptよりも強力ではあるが、Java(R)で書かれたコードは大きくなりがちで、クライアント装置の通信リソースをより多く消費する。さらに、ＪＶＭをロードしてJava(R)アプレットを実行することは、クライアント装置のかなりのメモリおよびプロセッサのリソースを消費する傾向がある。したがって、Java(R)コードを使用してクライアント側の性能を測定する実施例は、Java(R)Scriptを使用する実施例よりもクライアント側の性能を大きく低下させ得る。
【０１２１】
図示の実施例のJava(R)Scriptは、クライアント上で実行されると、あらゆるクライアントおよびあらゆるアプリケーションのすべてのＨＴＭＬ項目についての「クリックしてから表示されるまでの」応答時間の値、およびカーソルの動きの合計を提供するが、アプリケーションの開発者を関与させることはなく、クライアントのユーザに手動のステップを行なうことを要求することもなく、クライアント装置に何らかのソフトウェアを永久的にインストールすることもない。
【０１２２】
第１のページに対する応答時間のインスツルメンテーション
第１のページに特別なハンドリングが与えられなければ、第１のページをレンダリングするための応答時間はクッキーに記憶されない。応答時間は、サブミットイベントからフレームセットロードイベントまでの時間として計算される。しかし、第１のフレームセットを要求したページはインスツルメントを取り付けられていないため、サブミット時間を記録していない。そのページは、アプリケーションのためのクッキーすら作成していない。多くのページを備え、かつページの第１のフレームセットが単純であるアプリケーションなどの場合は、この状況は許容される。サービスプロバイダは、第１のページよりも後続のページおよびフレームセットに大きな関心を持っている。しかしながら、別の場合では、第１のページの応答時間が非常に望まれる。たとえば、第１のページは、サービスプロバイダにとって最も重要なページであり得る。また、第１のページは、ユーザがそのサイトを継続するかを判定する上で非常に重要であり得る。さらに、ウェブサイトのページの統計的なサンプリングは、分離されたページについての応答時間を得ることを利用している。以下に説明するいくつかの実施例は、第１のページまたは分離されたページに対する応答時間を提供する。
【０１２３】
一実施例では、サービスプロバイダは、ある所与のページ、たとえば「home.jsp」がクライアントプロセスによって要求される最初のページであると予想する。サービスプロバイダは、この第１のページの名前をつけなおし、元々の名前を備えた場所を保持するダミーのページを生成する。ダミーのページはサブミットイベントを生成してサブミット時間を記録し、次に、名前をつけなおした第１のページを要求する。たとえば、第１のページは「home1.jsp」と名前をつけなおされ、元々の名前「home.jsp」を備えた新しいページが生成され、これが自動的にサブミットイベントを発行し、ページ「home1.jsp」を要求する。クライアントプロセスのユーザは、home.jspと名付けられたページを以前と同じように要求するが、自動的にページ「home1.jsp」を受取る。この実施例は、「home1.jsp」を要求するダミーのページにインスツルメントを取り付けるため、「home1.jsp」をレンダリングするための応答時間が得られる。しかしながら、サービスプロバイダが、クライアントプロセスが要求する最初のページを予測できない場合、この実施例は有用ではない。
【０１２４】
第２の実施例では、第１の要求がクライアントプロセスから受取られるたびに、場所を保持するダミーのページが動的に生成される。第１の要求は、クライアント装置のアプリケーションのためのクッキーが存在しないことに基づいて推測される。この実施例は図５Ａに示される。上述のように、ステップ５０６では、ページが完了される直前にウェブブラウザによって実行されるコードは、アプリケーションのためのクッキーが存在するかを判定する。存在しない場合、ダウンロードされているページは、ブラウザによって要求される最初のページであり、制御はステップ５０８に移る。ステップ５０８では、コードはウェブブラウザにダミーのページを構築させ、これは元々のページへのリンクのためのリンククリックイベントハンドラを呼出すページロードイベントハンドラを含む。次に、制御は図４Ａに示されるステップ４００に移り、クッキーを作成し、サブミット時間を記録し、ページを要求する。たとえば、ウェブブラウザがステップ５０６でクッキーがないと判定したときにアプリケーションからページＰ１がダウンロードされている場合、ウェブブラウザは、ダミーのページを構築する。ダミーのページには要素がないが、ロードイベントハンドラを含み、これがリンクをページＰ１にセットし、リンククリックイベントハンドラ４００を呼出す。サブミット時間がイベントハンドラのクッキーに記録されると、ウェブブラウザはリンクの処理を続け、ページＰ１を要求する。このとき、インスツルメントを取り付けられたページＰ１が返されると、含まれるコードがステップ５０６でウェブブラウザにクッキーを検出させ、ステップ５１０および以下のステップを行なわせる。
【０１２５】
別の実施例では、統計的なサンプリングのために選択されたページなどの分離されたページの応答時間が判定される。この実施例では、予め規定されたJava(R)Scriptコードの２つのファイルが設けられる。第１のファイルは、図２のステップ２０４および２０６で統計的なサンプルが取られると判定されたときに元々の項目に挿入される。第１のファイルは、ウェブブラウザにサブミット時間を捕捉させ、サブミット時間およびインスツルメントを取り付けられるべき次のページを示すデータを備えた特別なクッキーを作成させるコードを含む。第２のファイルは、ページの要求とともに特別なクッキーが受取られたときに元々の項目に挿入される。第２のファイルは、ウェブブラウザにロード時間を捕捉かつ記録させ、結果を報告させ、特別なクッキーを削除させるコードを含む。この実施例では、ステップ２０４は、特別なクッキーが存在するかを判定するステップを含み、ステップ２０６は、特別なクッキーが存在する場合に満たされる条件を探すステップを含み、ステップ２０８は、特別なクッキーが存在する場合に第１のファイルの代わりに第２のファイルを挿入するステップを含む。
【０１２６】
例示的な動作
表１は、一連の時間でのクライアント装置の状態を説明することによって、この方法の動作を表わす。クライアント装置の状態は、表示装置に呈示されるページ（「ページ」の欄）、挿入されたコードでページにインスツルメントが取り付けられているか（「インスツルメントされているか」の欄）、その時間に発行されたウェブブラウザのイベント（「イベント」の欄）、性能測定インスツルメントコードによって作成されたクッキーが存在するか（「インスツルメントクッキー」の欄）、サブミット時間、ロード時間、カーソルの動きの計数に対してクッキーに記憶された値（それぞれ、「サブミット時間」、「ロード時間」、および「カーソル計数」の欄）よって、各時間（「時間」の欄）について表１で説明される。
【０１２７】
【表１】
2004537097.tif 000003
【０１２８】
この例では、性能測定インスツルメントを提供するサーバは、フレームＦ１ならびにＦ２を有する第１のフレームセットＳ１、および単一のページからなる第２のフレームセットＳ２を作成するアプリケーションを含む。フレームＦ１内のページは、図３に示される第１のフレーム内のページと同じである。
【０１２９】
時間ｔ０では、ウェブブラウザは、クライアント装置の表示装置にユーザのホームページを呈示している。ページにはインスツルメントは取り付けられておらず、ウェブブラウザはクライアント側の性能を測定するように構成されていない。ユーザはまだ動作していないため、インスツルメントクッキーはまだ作成されていない。したがって、サブミット時間、ロード時間またはカーソルの動きの計数に対する値はない。
【０１３０】
時間ｔ１では、ユーザはアプリケーションからのサービスを要求する。要求は、当該技術分野で公知の方法であればどのような方法で開始してもよい。たとえば、ユーザは、ウェブブラウザのアドレスバーにアプリケーションのＵＲＬをタイプしてもよいし、またはユーザはアプリケーションの以前の使用に基づくブラウザのブックマークに記憶されたリンクをクリックしてもよいし、もしくはユーザのホームページ上のリンクをクリックしてもよい。どの場合でも、ウェブブラウザは、フレームセットＳ１を提供するアプリケーションへのリンクのクリックに相当するイベントを発行する。ユーザのホームページはインスツルメントを取り付けられていないため、ウェブブラウザはクッキーを作成せず、またはサブミット時間を記憶しない。アプリケーションに対する要求はサーバに送られる。
【０１３１】
要求に応答して、アプリケーションはフレームセットＳ１に対して項目を生成し、サーバは、図５Ａに示されるロード中に実行される命令および図５Ｂ、図４Ａ、図４Ｂ、図４Ｃおよび図４Ｄに示されるインスツルメンテーションイベントハンドラに対して上述の予め規定されたJava(R)Scriptを挿入してその項目を変更する。変更された項目のロード中、ウェブブラウザは、図５Ａに示されるステップを行なうためのコードを実行し始める。ステップ５０６では、ウェブブラウザは、インスツルメントクッキーがまだ存在しないと判定するため、制御はステップ５０８に移る。ステップ５０８によって表わされるコードは、ここでは「Dummy」と名付けられ、アプリケーションへのリンクをクリックするページロードイベントハンドラおよびリンクイベントのクリックに対するインスツルメンテーションハンドラ４００を備えるダミーページをウェブブラウザに構築させる。
【０１３２】
時間ｔ２では、白紙のダミーのページがロードされ、クライアント装置の表示装置に呈示される。ウェブブラウザはページロードイベントを発行する。インスツルメントクッキーはまだ作成されておらず、サブミット時間、ロード時間またはカーソル計数の値はセットされていない。
【０１３３】
ロードページイベントに応答して、時間ｔ３では（おそらく、時間ｔ２のマイクロ秒後）、ウェブブラウザは、リンククリックイベントを発行し、リンクのクリックに対するインスツルメンテーションイベントハンドラ４００を実行する。図４Ａに示されるように、このインスツルメンテーションイベントハンドラ４００は、ステップ４０４で現在の時間ｔ３を判定し、ステップ４０６でその時間をサブミット時間としてクッキーに記憶する。無効な値ゼロを有するロード時間およびカーソル計数の値も、ステップ４０６の間にクッキーに記憶される。表１は、時間ｔ３では、クッキーがサブミット時間としての値ｔ３を備えて存在することを示す。ステップ４０８では、クライアント装置で実行しているウェブブラウザの種類およびバージョンなどの補助的なデータがクッキーに記憶される。この例では、リンクのクリックに対する元々のイベントハンドラはないため、ステップ４１０は動作を行なわない。次に、制御はウェブブラウザの方法に戻り、サーバ上のアプリケーションからのサービスを要求する。クッキーは、要求とともにウェブブラウザによって自動的にサーバに送られる。
【０１３４】
要求に応答して、アプリケーションは再びフレームセットＳ１に対して項目を生成し、サーバは予め規定されたJava(R)Scriptを挿入することで項目を再び変更する。変更された項目のロード中、表１の時間ｔ４では、ウェブブラウザは図５Ａに示されるステップを行なうためのコードを再び実行し始める。ステップ５０６では、ウェブブラウザはインスツルメントクッキーが存在すると判定するため、制御はステップ５１０から５１４まで移動する。ステップ５１０および５１２によって表わされるコードは、ウェブブラウザに、ウインドウおよびページレベルイベントに対する元々のイベントハンドラを探させ、それらをウインドウおよびページレベルイベントに対するインスツルメンテーションイベントハンドラで置換えさせる。この例では、そのようなイベントに対する元々のイベントハンドラはない。windows.onLoadイベントハンドラは、図４Ｂに示されるインスツルメンテーションハンドラ４２０にセットされ、page.onLoadイベントハンドラは図５Ｂに示されるインスツルメンテーションハンドラ５２０にセットされ、page.onUnLoadイベントハンドラは、図４Ｃに示されるインスツルメンテーションハンドラ４４０にセットされる。ステップ５１４では、フレームセット内のページ数が保存される。例示的なフレームセットＳ１の情報によると、フレームセットには２つのページがあるため、値２が、フレームセットのページ数として、たとえば、Npagesと名付けられた変数に保存される。クッキーの作成および更新に使用される他のパラメータも無効な値にセットされる。たとえば、ページカウンタ、カーソルの動きのカウンタ、サブミット時間およびロード時間は、ゼロにセットされる。しかしながら、ここではクッキーは更新されない。
【０１３５】
時間ｔ５では、フレームセットＳ１の第１のフレームのページＦ１がロードされ、表１の「ページ」欄のＳ１．Ｆ１で示される。ウェブブラウザは、ページＳ１．Ｆ１に対してページロードイベントを発行し、図５Ｂに示されるページロードイベントに対するインスツルメンテーションイベントハンドラ５２０が実行される。ステップ５２２では、元々のページイベントハンドラはないと判定されるため、制御は、ステップ５２６、５２８および５３０に移り、ページ上のさまざまなウェブページ要素に対してリンクのクリックイベント、サブミットイベント、フォーカスイベントおよび変更イベントに対するイベントハンドラを登録する（図３の第１のフレームに示されるページについて説明済み）。この例では、ウェブブラウザはウインドウレベルロードイベントを発行できるため、制御は、ウェブブラウザによってウインドウロードイベントが発行されるまでステップ４２０に移らない。代わりに、制御はウェブブラウザの組込みの方法に移る。ここではクッキーには変更は行なわれない。
【０１３６】
ウェブブラウザがウインドウレベルロードイベントを発行しない場合、制御はステップ４２０に移り、ステップ４２４でフレームセットのすべてのページがまだロードされていないと判定し、次に、制御はウェブブラウザの組込みの方法に戻る。
【０１３７】
時間ｔ６では、ウェブブラウザはページＳ１．Ｆ１に対してアンロードイベントを発行し、図４Ｃに示されるページアンロードイベントに対するインスツルメンテーションハンドラ４４０を起動する。ステップ４４６では、ページカウンタが増分される。ページカウンタは最初に呼出されたときは無効な値を有するため、ページカウンタは１にセットされる。クッキーには変更は行なわれない。
【０１３８】
時間ｔ７では、フレームセットＳ１の第２のフレーム内のページＦ２がロードされ、表１の「ページ」欄のＳ１．Ｆ１，Ｆ２で示される。ウェブブラウザはページＳ１．Ｆ２に対してページロードイベントを発行し、図５Ｂに示されるページロードイベントに対するインスツルメンテーションハンドラ５２０が実行される。ステップ５２２では、元々のページイベントハンドラがないと判定されるため、制御はステップ５２６、５２８および５３０に移り、ページ上のさまざまなウェブ要素のリンクのクリックイベント、サブミットイベント、フォーカスおよび変更イベントに対してイベントハンドラを登録する。この例では、ウェブブラウザはウインドウレベルロードイベントも発行するため、制御はステップ４２０に移る。ウェブブラウザがウインドウレベルロードイベントを発行しない場合、制御は、ページロードイベントハンドラ５２０内からステップ４２０に移る。
【０１３９】
ステップ４２４では、フレームセット内のすべてのページがロードされたと判定される。なぜなら、ページカウンタ（現在のページは含まず）に現在のページのための１を加えると変数NPagesに保存されるフレームセットのページ数と等しいためである。ステップ４２６では、現在の時間がｔ７であると判定される。ステップ４２８では、クッキーは、ロード時間としてのｔ７で更新される。表１は、サブミット時間のｔ３、ロード時間のｔ７および時間ｔ７でのカーソル計数の０を含むことを示す。実施例によっては、差ｔ７−ｔ３も応答時間として記憶される。この例では、ステップ４３０および４３２は含まれず、制御はステップ４３４に直接移る。
【０１４０】
時間ｔ８では、ステップ４３４で、Dummy.gifと呼ばれる画像ファイルに対する要求が生成され、サーバに送られる。ウェブブラウザは、自動的に要求にクッキーを含めるため、時間サブミット時間、ロード時間およびｔ８でのカーソル計数の値はサーバに送られ、サーバのクッキーのログに記憶される。Dummy.gifファイルはデータを含まないため、表示装置上には何の変化も示されない。次に、クッキーの値はゼロにリセットされる。怠惰な報告を用いる実施例では、ステップ４３４は省略され、クッキーは、ブラウザがサーバ上のアプリケーションからページを次に要求したときに報告される。
【０１４１】
この例では、ロードウインドウイベントに対する元々のイベントハンドラはないため、ステップ４３６は動作を行なわず、次に、制御はウェブブラウザの組込みの方法に移る。ウェブブラウザは、フレームセットのウェブページ要素のユーザによる操作を監視する。この例では、ユーザは、図３の第１のフレームに示されるページに似た第１のフレームのページ上の各要素の上にカーソルを動かす。ユーザが各ページ要素上にカーソルを動かすと、ウェブブラウザはフォーカスイベントを発行し、図４Ｄに示されるカーソルイベントに対するインスツルメンテーションハンドラ４６０を呼出し、これがステップ４６６で、クッキーに記憶されるカーソルの動きのカウンタを増分させる。さらに、ユーザは入力フィールド３７２ａに３文字のデータを入力し、入力フィールド３７２ｂに４文字のデータを入力する。ユーザが各文字を入力すると、ウェブブラウザは変更イベントを発行し、図４Ｄに示されるカーソルイベントに対するインスツルメンテーションハンドラ４６０を呼出し、これがステップ４６６で、クッキーに記憶されるカーソルの動きのカウンタを増分させる。この例では、各変更は各フォーカスと同じものとして扱われ、増分１として記録される。
【０１４２】
時間ｔ９では、「イベント」欄に示されるように、１０のフォーカスイベントおよび７つの変更イベントが行なわれ、１７のカーソルの動きが生じる。クッキーは、ステップ４３４の間にそこに位置付けられたサブミット時間およびロード時間に対して無効な値（０，０）を含み、カーソル計数に対しては値１７を含む。怠惰な報告を用いる実施例では、ステップ４３４は省かれ、クッキーは、サブミット時間、ロード時間、カーソル計数に対して、それぞれ、ｔ３、ｔ７および１７の値を含む。
【０１４３】
時間ｔ１０では、ユーザは、第１のフレームセットＳ１の第１のフレーム内のページＦ１上の図３に示される「次へ」ボタン３６６ａをクリックする。ウェブブラウザは、そのリンクに対するクリックイベントを発行し、図４Ａに示されるリンククリックイベントに対するインスツルメンテーションハンドラ４００を起動する。図４Ａに示されるように、このインスツルメンテーションイベントハンドラ４００は、ステップ４０４で現在の時間ｔ１０を判定し、ステップ４０６でその時間をサブミット時間としてクッキーに記憶する。それぞれ、ゼロおよび１７の値を有するロード時間およびカーソルの動きの値も、表１に示されるようにクッキーに記憶される。ステップ４０８では、補助的なデータがあればクッキーに記憶される。一部の実施例でクッキーに記憶される補助的な情報の例は、ユーザ識別などのログイン情報、および１つのセッションから別のセッションへ持続する暗号化されたパスワードなどがある。実施例によっては、補助的なデータは、注文の変更、払戻、１つの口座から別の口座への返金などの取引の種類を表わす情報を含む。実施例によっては、補助的な情報は、既にクッキーに存在している場合、再び記憶されない。怠惰な報告を用いる実施例では、クッキー内の値は、ｔ３、ｔ７および１７であり、これらはサーバにまだ報告されていないため、新しいサブミット時間ｔ１０が記憶される前に、古いサブミット時間ｔ３は、別の変数に移動され、クッキーに保存される。
【０１４４】
この例では、リンクのクリックイベントに対する元々のイベントハンドラはないため、ステップ４１０は動作を行なわない。次に、制御はウェブブラウザの方法に戻り、サーバ上のアプリケーションから次のフレームセットを要求する。クッキーは、ウェブブラウザによって、要求とともにサーバに自動的に送られる。このクッキーは新たなサブミット時間および前のページに対するカーソル計数を含む。怠惰な報告を用いる実施例では、要求とともに送られるクッキーは、サブミット時間、ロード時間および前のページに対するカーソル計数、ならびに現在のページに対するサブミット時間のそれぞれ、ｔ３、ｔ７、１７およびｔ１０を含む。
【０１４５】
要求に応答して、アプリケーションはフレームセットＳ２に対する項目を生成し、サーバは予め規定されたJava(R)Scriptを挿入することでその項目を再び変更する。変更された項目のロード中に、ウェブブラウザは図５Ａに示されるステップを行なうためのコードを実行し始める。ステップ５０６では、ウェブブラウザはインスツルメントクッキーが存在すると判定するため、制御は５１０から５１４に移る。ステップ５１０および５１２によって表わされるコードは、ウェブブラウザにウインドウおよびページレベルイベントに対する元々のイベントハンドラを探させ、それらをウインドウおよびページレベルイベントに対するインスツルメンテーションイベントハンドラで置換えさせる。この例では、そのようなイベントに対する元々のイベントハンドラはない。windows.onLoadイベントハンドラは、図４Ｂに示されるインスツルメンテーションハンドラ４２０にセットされ、page.onLoadイベントハンドラは、図５Ｂに示されるインスツルメンテーションハンドラ５２０にセットされ、page.onUnloadイベントハンドラは、図４Ｃに示されるインスツルメンテーションハンドラ４４０にセットされる。ステップ５１４では、フレームセット内のページ数が保存される。例示的なフレームセットＳ２の情報によると、フレームセットには１つのページがあるため、値１が変数NPagesに保存される。クッキーを作成および更新するために使用される他のパラメータも無効な値にセットされる。たとえば、ページカウンタ、カーソルの動きのカウンタ、サブミット時間およびロード時間はゼロにセットされるが、クッキーは更新されない。
【０１４６】
時間ｔ１１では、第２のフレームセットＳ２の唯一のページがロードされ、表１の「ページ」欄のＳ２に示される。ウェブブラウザは、ページＳ２に対するページロードイベントを発行し、図５Ｂに示されるページロードイベントに対するインスツルメンテーションハンドラ５２０が実行される。ステップ５２２では、元々のページイベントハンドラはないと判定されるため、制御はステップ５２６、５２８および５３０に移り、リンクのクリックイベント、サブミットイベント、フォーカスイベントおよび変更イベントに対するイベントハンドラをページ上のさまざまなウェブページ要素に対して登録する。この例では、ウェブブラウザはウインドウレベルロードイベントも発行するため、制御はステップ４２０に移る。
【０１４７】
ステップ４２４では、フレームセット内のすべてのページがロードされたと判定される。なぜなら、ページカウンタ（現在のページは含まず）に現在のページのための１を加えると、変数NPagsに保存されるフレームセット内のページ数１に等しいためである。ステップ４２６では、現在の時間がｔ１１であると判定される。ステップ４２８では、クッキーは、ロード時間としてのｔ１１で更新される。表１は、サブミット時間のｔ１０、ロード時間のｔ１１および時間ｔ１１でのカーソル計数の１７を含むことを示す。実施例によっては、カーソル計数も更新され、これはクッキー内の値を０にリセットする。また実施例によっては、差ｔ７−ｔ３も応答時間として記憶される。この例では、ステップ４３０および４３２は含まれず、制御はステップ４３４に直接移る。
【０１４８】
時間ｔ１２では、ステップ４３４はサーバからDummy gifと呼ばれる画像ファイルを要求する。ウェブブラウザは、自動的に要求にクッキーを含めるため、サブミット時間、ロード時間および時間ｔ１２でのカーソル計数の値がサーバに送られ、サーバのクッキーのログに記憶される。Dummy gifファイルはデータを含まないため、表示装置には何の変化も示されない。次に、クッキー内の値はゼロにリセットされる。怠惰な報告を用いる実施例では、ステップ４３４は省略され、クッキーは、ブラウザがサーバ上のアプリケーションからページを次に要求するときに報告される。
【０１４９】
したがって、サーバ上のアプリケーションによって生成されるＨＴＭＬフレームセットにサーバによって挿入される例示的なJava(R)Scriptコードは、変更された項目を形成し、これは、クライアント装置上のウェブブラウザによってダウンロードされると、ウェブブラウザに、応答時間およびカーソルの動きを示すクライアント側の性能の測定値を記憶させ、それらの測定値をサーバに報告させる。
【０１５０】
クライアント側の性能に対する例示的なサーバ側の応答
実施例によっては、サービスプロバイダのためにネットワークに接続される装置上で実行するプロセスが性能に応答する。たとえば、サーバ装置１０２上で実行する性能の分析および応答プロセス１９４は、最低限の許容性能のしきい値を下回る性能を自動的に検出し、しきい値を下回る性能に応答して何らかの動作を行なう。
【０１５１】
実施例によっては、自動的な動作は、性能の測定値に基づいて通知を送ることを含む。通知を送ることは、サービスプロバイダのシステム管理者に、特定のユーザまたはユーザ組織に対する性能が低下しているというページを送るかまたは電話をかけることを含む。実施例によっては、通知を送ることは、サーバ装置上などのネットワーク上で実行する別のプロセスにメッセージを送り、何らかの動作を行なうことを含む。
【０１５２】
実施例によっては、自動的な動作は、要求を受取ってから応答して項目を送る間にユーザによって知覚される応答時間とサーバ側で費やされる時間との差を判定することを含む。差が小さければ、性能の問題は、サーバ側に特定される。差が大きければ、問題はクライアントおよびネットワーク側に特定される。
【０１５３】
実施例によっては、自動的な動作は、アプリケーションによって生成された項目をより小さくまたはより単純になるように改訂して、その項目がより容易に通信およびレンダリングされ得るようにすることを含む。生成された項目の改訂は、特に問題がサーバ側に特定されているときに有用である。
【０１５４】
実施例によっては、応答時間はウェブブラウザの種類およびバージョンまたはオペレーティングシステムの種類およびバージョンまたはその両者に相互に関連付けられ、ブラウザのバージョンの中に他よりもひどく性能が低下しているものがあることを示す傾向を検出できるかを判定する。ウェブサーバは、ウェブのサービスの要求とともに提供されるユーザエージェントフィールドからのブラウザおよびオペレーティングシステムの種類ならびにバージョンを記録する。実施例によっては、クライアント装置の構成要素の傾向を検出するために相互の関連付けが行われる。応答時間とブラウザまたはクライアント装置の構成要素もしくは両者とを相互に関連付けることは、問題がクライアント側に特定されている場合に特に有用である。
【０１５５】
図６は、一実施例による、サーバに報告されたクライアント側の性能の測定値で動作させるための例示的な性能分析および応答の方法６００を示すフローチャートである。実施例によっては、方法６００はサーバ上で実行される。また、実施例によっては、方法６００はネットワークを通じてサーバに接続される別の装置で実行される。
【０１５６】
ステップ６０２では、サーバ上で自動的に形成されたクッキーのログがオペランド解析されて分析のための性能の測定値および補助的なデータが得られる。ステップ６０４では、性能の情報は測定値および補助的なデータに基づいて導出され、リレーショナルデータベースに記憶される。たとえば、応答時間は、サブミット時間およびロード時間から導出され、フレームセット、測定の時間および日付、ブラウザの種類およびバージョン、ならびにフレームセットに対するカーソルの動きの計数への参照とともにデータベーステーブルに記憶される。リレーショナルデータベースにともに位置付けられる情報は、ログファイル全体に分散されていてもよい。たとえば、ステップ４３４によって提供される即時の報告を用いると、第１のフレームセットに対するカーソル計数は、第２のフレームセットに対するサブミット時間とともにクッキーのログに現われる。
【０１５７】
ステップ６０６では、性能が何らかの最低限の性能のしきい値を下回るかが判定される。性能が最低限の性能のしきい値を下回る場合、制御はステップ６０８に移り、低下した性能に応答する。たとえば、最低限の性能のしきい値が最大限の許容応答時間に関連付けられる場合、最大限の応答時間を上回る応答時間は、最低限の性能のしきい値を下回る性能に対応する。たとえば、最低限の性能のしきい値が、ユーザの９０％が１０秒未満の応答時間を感じるというものであれば、ユーザの８５％が１０秒未満の応答時間を感じると検出することは、最低限の性能のしきい値を下回る性能に対応する。
【０１５８】
ステップ６０８では、しきい値を下回る性能への応答が生成される。たとえば、ステップ６０８は通知を送る。通知を送ることは、サービスプロバイダのシステム管理者に、ある特定のユーザまたはユーザ組織に対する性能が低下しているというページを送るか、または電話をかけることを含む。実施例によっては、通知を送ることは、サーバ上などのネットワーク上で実行する別のプロセスにメッセージを送り、自動的に何らかの動作を行なうことを含む。
【０１５９】
応答の中には、アプリケーションによって生成された項目を改訂して容易に通信およびレンダリングされるより小さいかまたはより単純な項目にすることを含むものがある。また、要求を受取ってから応答して項目を送る間に、ユーザによって知覚される応答時間とサーバ側で費やされる時間との差を判定することを含む応答もある。差が小さい場合、性能の問題はサーバ側に特定される。差が大きい場合、問題はクライアントおよびネットワーク側に特定される。
【０１６０】
ステップ６１０では、リレーショナルデータベース内のデータが分析され、報告が作成される。たとえば、応答時間はブラウザの種類およびバージョンに相互に関連付けられて、他よりもひどく性能が低いブラウザのバージョンがあることを示す傾向を検出できるかが判定される。別の例では、クライアント装置の構成要素の傾向を検出するために相互の関連付けが行われる。
【０１６１】
これらの技術によってサービスプロバイダは本物のユーザが感じる実際の性能の測定値を得ることができ、性能の問題をクライアントプロセスまたはクライアント装置の特定の構成要素に相互に関連付けることによって、好ましくない性能の原因を自動的に診断するなど、分析を行なうことができる。
【０１６２】
ハードウェアの概要
図７は、この発明の一実施例を実施できるコンピュータシステム７００を示すブロック図である。コンピュータシステム７００は、情報を通信するためのバス７０２または他の通信機構、および情報を処理するためのバス７０２に結合されたプロセッサ７０４を含む。コンピュータシステム７００は、バス７０２に結合された、ランダムアクセスメモリ（ＲＡＭ）または他の動的な記憶装置などのメインメモリ７０６も含み、プロセッサ７０４によって実行されるべき情報および命令を記憶する。メインメモリ７０６は、プロセッサ７０４によって実行されるべき命令の実行中に一時的な変数またはその他の中間情報を記憶するために使用してもよい。コンピュータシステム７００は、プロセッサ７０４のための静的な情報および命令を記憶するため、バス７０２に結合されたリードオンリメモリ（ＲＯＭ）７０８またはその他の静的な記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置７１０は、情報および命令を記憶するために設けられ、バス７０２に結合される。
【０１６３】
コンピュータシステム７００は、バス７０２を介して、ブラウン管（ＣＲＴ）などの表示装置７１２に接続して、コンピュータのユーザに情報を表示してもよい。英数字キーおよび他のキーを含む入力装置７１４はバス７０２に結合されて、情報およびコマンドの選択をプロセッサ７０４に通信する。別の種類のユーザ入力装置は、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御７１６であり、方向情報およびコマンド選択をプロセッサ７０４に通信し、表示装置７１２上のカーソルの動きを制御する。この入力装置は、通常、第１の軸（たとえば、ｘ）および第２の軸（たとえば、ｙ）の２つの軸で２つの次数の自由を有し、このことによって装置は平面での位置を特定することができる。
【０１６４】
この発明は、ここに説明される技術を実行するためにコンピュータシステム７００を使用することに関する。この発明の一実施例によると、それらの技術は、プロセッサ７０４がメインメモリ７０６に含まれる１つまたは複数の命令の１つまたは複数のシーケンスを実行することに応答して、コンピュータシステムによって実行される。そのような命令は、記憶装置７１０などの別のコンピュータ読取可能な媒体からメインメモリ７０６に読込まれてもよい。メインメモリ７０６に含まれる命令のシーケンスを実行することは、ここに説明されるプロセスのステップをプロセッサ７０４に行なわせる。代替の実施例では、配線で接続された（hard-wired）回路を、ソフトウェアの命令の代わりに、またはソフトウェアの命令と組合せて使用して、この発明を実現してもよい。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアの特定の組合せに限定されない。
【０１６５】
ここで使用される「コンピュータ読取可能な媒体」という言葉は、命令をプロセッサ７０４に与えて実行させることに参加する媒体を指す。そのような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むさまざまな形をとり得るが、これらに限らない。不揮発性媒体は、たとえば、記憶装置７１０などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ７０６などの動的メモリを含む。伝送媒体は、バス７０２を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、電波通信および赤外線データ通信中に生成されるものなどの、音波または光波の形をとってもよい。
【０１６６】
コンピュータ読取可能な媒体の一般的な形は、たとえば、フロッピー（Ｒ）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、またはその他の磁気媒体、ＣＤ−ＲＯＭ、他の光媒体、パンチカード、紙テープ、パターンを備えた他の物理的な媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のメモリチップまたはカートリッジ、後述する搬送波、またはコンピュータがそこから読取ることのできる他の媒体を含む。
【０１６７】
さまざまな形のコンピュータ読取可能な媒体が、１つまたは複数の情報の１つまたは複数のシーケンスをプロセッサ７０４に運んで実行させることに関与する。たとえば、命令は遠隔コンピュータの磁気ディスク上で運ばれてもよい。遠隔コンピュータは命令を動的メモリにロードし、モデムを使用して電話回線上で命令を送ることができる。コンピュータシステム７００のローカルモデムは、電話線上でデータを受取り、赤外線トランスミッタを使用してデータを赤外線信号に変換する。赤外線検出器は赤外線信号で運ばれるデータを受信することができ、適切な回路はデータをバス７０２上に位置付けることができる。バス７０２はデータをメインメモリ７０６に運び、そこからプロセッサ７０４が命令を検索して実行する。メインメモリ７０６によって受取られる命令は、プロセッサ７０４による実行の前または後に任意で記憶装置７１０に記憶してもよい。
【０１６８】
コンピュータシステム７００は、バス７０２に結合される通信インターフェイス７１８も含む。通信インターフェイス７１８は、ローカルネットワーク７２２に接続されるネットワークリンク７２０に結合する２方向のデータ通信を提供する。たとえば、通信インターフェイス７１８を総合デジタル通信網（ＩＳＤＮ）カードまたはモデムに統合して、対応する種類の電話線にデータ通信接続を提供してもよい。別の例では、通信インターフェイス７１８は、互換性ＬＡＮへのデータ通信接続を提供するローカルエリアネットワーク（ＬＡＮ）カードであってもよい。無線リンクも実現可能である。そのような実現例では、通信インターフェイス７１８はさまざまな種類の情報を表わすデジタルデータストリームを運ぶ電気信号、電磁気信号または光信号を授受する。
【０１６９】
ネットワークリンク７２０は、通常１つまたは複数のネットワークを通じて他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク７２０は、ローカルネットワーク７２２を通じてホストコンピュータ７２４またはインターネットサービスプロバイダ（ＩＳＰ）７２６によって管理されるデータ装置への接続を提供してもよい。ＩＳＰ７２６は、現在では一般に「インターネット」７２８と呼ばれているワールドワイドパケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク７２２およびインターネット７２８はともに、デジタルデータストリームを運ぶ電気信号、電磁気信号または光信号を使用する。さまざまなネットワークを通る信号およびネットワークリンク７０２上ならびに通信インターフェイス７１８を通る信号は、コンピュータシステム７００にデジタルデータを授受するが、これらは情報を伝送する搬送波の例示的な形である。
【０１７０】
コンピュータシステム７００は、ネットワーク、ネットワークリンク７２０および通信インターフェイス７１８を通じて、プログラムコードを含むメッセージを送り、データを受取ることができる。インターネットの例では、サーバ７３０は、アプリケーションプログラムに対して要求されたコードをインターネット７２８、ＩＳＰ７２６、ローカルネットワーク７２２および通信インターフェイス７１８を通じて伝送することができる。
【０１７１】
受取られたコードは、受け取られるときにプロセッサ７０４によって実行してもよいし、および／または記憶装置７１０もしくは他の不揮発性記憶装置に記憶して後に実行してもよい。このような態様で、コンピュータシステム７００は搬送波の形でアプリケーションコードを入手することができる。
【０１７２】
上述の明細書では、この発明を特定の実施例に関して説明した。しかしながら、この発明の広い精神および範囲を離れることなく、さまざまな変形および変更を行ない得ることは明白である。したがって、明細書および図面は、限定的な意味ではなく、例示的なものと見なされるべきである。
【図面の簡単な説明】
【０１７３】
【図１】一実施例によるネットワーク上のサーバおよびクライアントを示すブロック図である。
【図２】一実施例によるクライアント側の性能に対する応答を制御するための方法を示すフローチャートである。
【図３】サーバ装置上で作動する仮定のアプリケーションによって作成される例示的なコンテンツを示すブロック図である。
【図４Ａ】一実施例による、クライアントに送られる変更されたコンテンツに含まれる第１のイベントハンドラを示すフローチャートである。
【図４Ｂ】一実施例による、クライアントに送られる変更されたコンテンツに含まれる第２のイベントハンドラを示すフローチャートである。
【図４Ｃ】一実施例による、クライアントに送られる変更されたコンテンツに含まれる第３のイベントハンドラを示すフローチャートである。
【図４Ｄ】一実施例による、クライアントに送られる変更されたコンテンツに含まれる第４のイベントハンドラを示すフローチャートである。
【図５Ａ】一実施例による、クライアントに送られる変更されたコンテンツに含まれる性能測定コードを示すフローチャートの第１の部分の図である。
【図５Ｂ】一実施例による、クライアントに送られる変更されたコンテンツに含まれる性能測定コードを表わすフローチャートの第２の部分の図である。
【図６】一実施例による、クライアント側の性能の測定値の分析を行なうための方法を示すフローチャートである。
【図７】この発明の実施例を実現できるコンピュータシステムを示すブロック図である。
【図１】
2004537097.tif 000004
【図２】
2004537097.tif 000005
【図３】
2004537097.tif 000006
【図４Ａ】
2004537097.tif 000007
【図４Ｂ】
2004537097.tif 000008
【図４Ｃ】
2004537097.tif 000009
【図４Ｄ】
2004537097.tif 000010
【図５Ａ】
2004537097.tif 000011
【図５Ｂ】
2004537097.tif 000012
【図６】
2004537097.tif 000013
【図７】
2004537097.tif 000014
【国際公開パンフレット】
2004537097.tif 000015
2004537097.tif 000016
2004537097.tif 000017
2004537097.tif 000018
2004537097.tif 000019
2004537097.tif 000020
2004537097.tif 000021
2004537097.tif 000022
2004537097.tif 000023
2004537097.tif 000024
2004537097.tif 000025
2004537097.tif 000026
2004537097.tif 000027
2004537097.tif 000028
2004537097.tif 000029
2004537097.tif 000030
2004537097.tif 000031
2004537097.tif 000032
2004537097.tif 000033
2004537097.tif 000034
2004537097.tif 000035
2004537097.tif 000036
2004537097.tif 000037
2004537097.tif 000038
2004537097.tif 000039
2004537097.tif 000040
2004537097.tif 000041
2004537097.tif 000042
2004537097.tif 000043
2004537097.tif 000044
2004537097.tif 000045
2004537097.tif 000046
2004537097.tif 000047
2004537097.tif 000048
2004537097.tif 000049
2004537097.tif 000050
2004537097.tif 000051
2004537097.tif 000052
2004537097.tif 000053
2004537097.tif 000054
2004537097.tif 000055
2004537097.tif 000056
2004537097.tif 000057
2004537097.tif 000058
2004537097.tif 000059
2004537097.tif 000060
2004537097.tif 000061
2004537097.tif 000062
2004537097.tif 000063
2004537097.tif 000064
2004537097.tif 000065
2004537097.tif 000066
2004537097.tif 000067
2004537097.tif 000068
2004537097.tif 000069
2004537097.tif 000070
2004537097.tif 000071
2004537097.tif 000072
2004537097.tif 000073
2004537097.tif 000074
2004537097.tif 000075
2004537097.tif 000076
2004537097.tif 000077
2004537097.tif 000078
2004537097.tif 000079
2004537097.tif 000080
2004537097.tif 000081
2004537097.tif 000082
【国際調査報告】
2004537097.tif 000083
2004537097.tif 000084