単一ページアプリケーションのルート変更の時間計測
従来のマルチページアプリケーションでは、ユーザーが新しいコンテンツのロードを要求すると、ユーザーは実際にはサーバーから新しい HTML ページを要求することになります。その結果、CloudWatch RUM ウェブクライアントは、通常のパフォーマンス API メトリクスを使用してロード時間をキャプチャします。
しかし、単一ページのウェブアプリケーションでは、JavaScript と Ajax を使用して、サーバーから新しいページをロードせずにインターフェイスが更新されます。単一ページの更新は、ブラウザの時間計測 API では記録されず、ルート変更の時間計測を使用します。
CloudWatch RUM は、サーバーからの全ページロードと単一ページ更新の両方のモニターリングをサポートしていますが、次の違いがあります。
ルート変更の時間計測については、
tlsTime
、timeToFirstByte
などのようなブラウザ提供のメトリクスはありません。ルート変更の時間計測については、
initiatorType
フィールドはroute_change
になります。
CloudWatch RUM ウェブクライアントは、ルートの変更につながる可能性のあるユーザーインタラクションをリッスンし、そのようなユーザーインタラクションが記録されると、ウェブクライアントはタイムスタンプを記録します。次の両方に該当すると、ルート変更の時間計測が開始されます。
ブラウザ履歴 API (ブラウザの [進む] ボタンと [戻る] ボタンを除く) を使用してルート変更を実行した。
ルート変更検出時刻と最新のユーザーインタラクションタイムスタンプの差が 1000 ms 未満。これにより、データスキューが回避されます。
その後、ルート変更の時間計測が始まると、進行中の AJAX リクエストと DOM ミューテーションがない場合、その時間計測は完了します。このとき、最後に完了したアクティビティのタイムスタンプが完了タイムスタンプとして使用されます。
進行中の AJAX リクエストまたは DOM ミューテーションが 10 秒 (デフォルト) を超えると、ルート変更の時間計測がタイムアウトします。この場合、CloudWatch RUM ウェブクライアントは、このルート変更の時間計測を記録しなくなります。
その結果、ルート変更イベントの期間は次のように計算されます。
(time of latest completed activity) - (latest user interaction timestamp)