27

私は接続速度の検出に取り組んでいるので、期間の計算にはwindow.performanceオブジェクトを使用する予定でした。

window.performance.timing オブジェクトがページ全体の読み込みに基づいて生成されるか、最後の要求と応答に基づいて生成されることに少し混乱しています。

例えば:

Web ページの読み込みのために 5 つのサーバー呼び出しを行っています。performance.timingオブジェクトは、5 つのサーバー呼び出しすべてに基づいて、または 5 番目のサーバー呼び出し (最後の呼び出し) に基づいて生成されます。

参考までに接続速度の計算例

 var bitsLoaded = 100000; //bits total size of all files (5 server call).
 var duration = performance.timing.responseEnd - performance.timing.navigationStart;
 var speedBps = Math.round(bitsLoaded / duration);
 var speedKbps = (speedBps / 1024).toFixed(2);
 var speedMbps = (speedKbps / 1024).toFixed(2); 

説明する準備ができていない明確でないもの

window.performance に関する任意のアイデア

4

2 に答える 2

54

パフォーマンス.タイミング

このチャートで performance.timing をよりよく理解できるかどうかはわかりません。

あなたの質問について:

Web ページの読み込みのために 5 つのサーバー呼び出しを行っています。performance.timing オブジェクトは、5 つのサーバー呼び出しすべてに基づいて、または 5 番目のサーバー呼び出し (最後の呼び出し) に基づいて生成されます。

答えは:すべてのリクエストとレスポンスperformance.timingに基づいて生成されます(ただし、ajax のものは含まれません)。

頂いた接続速度計算スクリプトのサンプルは、以下の方が良いと思います。

var duration = performance.timing.responseEnd - performance.timing.responseStart;

navigationStartその理由は、 からまでの期間にresponseEnd は、サーバーからクライアントにデータを転送しない DNS タイミングが含まれているためです。

タイミングの定義については、https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.htmlを参照してください。

于 2013-05-29T09:07:46.570 に答える
1

performance.timing は、最後のリクエストとレスポンスに基づいていません。ページのライフサイクルにおける、navigationStartステージとloadEventStartステージの間の遅延を測定します。hereで説明されているように、主な用途はページ読み込み速度を決定することです。

私の意見では。performance.timing は、ユーザーが応答を受信した後に開始され、ブラウザーで実行される JavaScript オブジェクトであるため、接続速度の測定には実際には使用できません。ユーザーに ping を送信し、往復時間を使用することをお勧めします。

于 2013-06-09T23:22:56.653 に答える