1

ページの読み込み時間を測定するためにPerformanceTimingインターフェイスを使用しています。

私のページのいくつかには長い「ブラウザ時間」 (すなわちloadEventEnd- responseEnd) があり、これはページからの Ajax リクエストが原因である可能性があると思います。

私の質問は、Ajax リクエストは PerformanceTiming プロセス モデルのどこに適合するのでしょうか? 「処理」ブロックにありますか?

プロセスモデル

もしそうなら、Ajax の実行時間を測定する最良の方法は何ですか?

4

2 に答える 2

2

現在、この問題と戦っています。ここ数年、jQuery の「ドキュメント準備完了」タイマーで起動される ajax リクエストがありました。これは、技術的に言えば、loadEventEnd を拡張するべきではありません。ただし、確実に loadEventEnd の起動をプッシュしました。

現在、これらの値を loadEventEnd の外に移動した前回のリリースで何が起こったのかを調べています。

これらの ajax リクエストを実際に測定するには、IE10 を使用するか、できれば 28 以上のバージョンの chrome を使用する必要があります。どちらにも resourceTiming インターフェイスが含まれています。

ページにロードされた各リソースについて、上記の navigationTiming インターフェースと同様の指標にアクセスできます。

Chrome の JavaScript コンソール (Windows では ctrl+shift+j) から、次のように入力します。

window.performance.getEntries()

これにより、ページに関連付けられているすべてのオブジェクトが返されます。ajax リクエストを取得するには、initatorType = xmlhttprequest が必要です。これらのイベントはすべて、次の方法で見つけることができます。

for(var i=0; i<window.performance.getEntries().length;i++){  
    console.log(window.performance.getEntries()[i].initiatorType);
}
于 2013-09-26T14:46:07.517 に答える
0

Ajax リクエストは、モデルの終了後にあります。

Ajax リクエストが実行され、パフォーマンス オブジェクトのプロパティに影響を与えない例については、https://stackoverflow.com/a/16289733/1168884を参照してください (ページの読み込みのみが反映されます)。

根本的な問題は、ページ読み込みイベントが完全に定義されているため (たとえば、DOM が完成して利用可能になっている)、これがモデルに反映されていることだと思います。Ajax イベントはそうではありません (たとえば、「ページ上のすべての Ajax の実行が完了しました」と言えるイベントは実際にはありません)。

私はそれを試していませんが、動的にロードされたコンテンツの測定を可能にすることを約束するプロジェクト Boomerang があります - http://lognormal.github.io/boomerang/doc/use-cases.html

于 2013-05-01T10:20:35.970 に答える