FirefoxのADDONSDK(v1.9)を使用して拡張機能を構築しています。この拡張機能は、すべてのHTTPリクエスト/レスポンスを読み取り、読み込みにかかった時間を計算できます。これには、メインフレームだけでなく、その他のロードファイル(サブフレーム、スクリプト、css、画像など)も含まれます。
これまでのところ、「observer-service」モジュールを使用して以下をリッスンすることができます。
- HTTPリクエストが作成されたときの「http-on-modify-request」。
- HTTP応答を受信したときの「http-on-examine-response」
- HTTP応答が完全にキャッシュから受信された場合の「http-on-examine-cached-response」
- HTTP応答がキャッシュから部分的に受信された場合の「http-on-examine-merged-response」
私のアプリケーションは次のシーケンスに従います。
- リクエストは、オブザーバーを介して作成および登録されます。
- 現在の時刻を保存し、リクエストロードのstart_timeとしてマークします。
- リクエストに対する応答は、オブザーバーの1つを介して受信および登録されます。
- 現在の時間を保存し、以前に保存した時間を使用してリクエストの読み込み時間を計算します。
問題: 要求と応答を結び付ける要求ID(または他の一意の値)が見つからないため、ロードの開始時刻と終了時刻をリンクできません。現在、リクエスト/レスポンスのURLを使用してそれらを結び付けていますが、2つ以上の等しいURLが同時に読み込まれると「競合状態」が発生するため、これは正しくありません。Google Chromeは、一意のrequestIdを提供することでこの問題を解決しますが、Firefoxで同様の機能を見つけることができませんでした。