13

Web アプリケーションの実際の平均ページ読み込み時間を知りたいです。

簡単に言うと、平均的な訪問者がサイトのページを使い始めるまでにどのくらい待機するかをログに記録します。彼らが私のサイトへのリンクをクリックしてから、サイトのレンダリングが完了し、入力を受け入れる準備が整うまで。

標準的な解決策は、Javascript を使用して、window.onload() イベント内のスクリプトからスクリプトまでの時間を比較することです。

(参照: http://www.dreamincode.net/code/snippet1908.htm )

これは、ドメインを解決し、Javascript の解析を開始するのに十分な HTML コンテンツを受信するのにかかる時間を無視しているため、私にはあまり正確な手段とは思えません。

また、ページの読み込みが実際に完了する前に、Safari が wi​​ndow.onload を起動しているようにも見えます ( http://www.howtocreate.co.uk/safaribenchmarks.html )。

何か案は?

現在のリクエストがJavascriptを介して開始された時間を取得することは可能ですか?
すべてのブラウザーですべての準備が確実に整った後に発生するイベントはどれですか?

4

11 に答える 11

8

http://www.webpagetest.org/は、読み込み時間を測定するための優れたリソースです

また、Google chorme 開発ツールには、イベントを記録できるタイムライン パネルがあります。これは、Google Chrome でタイムラインがどのように機能するかを示す 2.5 分のビデオですhttp://www.youtube.com/watch?v=RhaWYQ44WEc

于 2012-04-27T13:51:58.100 に答える
3

Firebug はこのための優れたリソースであり、ページの読み込みに関するその他の情報もたくさんあります。さらに、YSlow を使用した Firebug はさらに一歩進んでいます。YSlow には、ページに対して実行する多数のチェックがあり、特定のルール (CDN を使用しているか、CSS と JS が圧縮されているかなど) に基づいてパフォーマンスを評価します。サイトにいくつかの大きな改善 (JS 圧縮は優れています) を行うことは非常に価値があると感じています。

于 2009-03-20T15:05:56.197 に答える
3

FireBugには「ネットワーク タイミング モード」があり、Web ページを構成する各リソースのダウンロードにかかった時間を確認できます。

さらに、サーバーがリクエストを準備するのに必要な時間を測定する必要があります。ブラウザやネットワークに影響を与えることはできないため、サーバーでのレンダリング時間はできるだけ短くする必要があります。

于 2009-03-20T14:58:06.013 に答える
1

Yahoo の YSLOW を試してみてください。質問の投稿に答えてくれますが、FireFox でしか動作しません (実際には firebug のプラグインです)。

于 2010-10-21T10:44:35.613 に答える
0

私が使用する方法は、(すべてのスクリプトが実行される)index.phpファイルの最初のものとしてセッション変数(まだ設定されていないことを確認するためにifでラップされる)を作成することです。次に、javaScriptにpageLoadイベントがあります。このイベントは、サーバー上の別のスクリプトにポストバックし、セッションの可変時間を取得して、現在の時刻から減算します。これにより、リクエストがサーバーにアクセスし、処理し、応答し、レンダリングするのにかかった時間がわかります。

ポストバックするスクリプトでセッション変数の設定を解除して、次にページが読み込まれたときに新しいセッション変数を設定し(設定を解除したために存在しないため)、最初からやり直すようにしてください。あなたがしたいと思うかもしれない唯一のことは、ajaxがサーバーを要求するのにかかった時間を見つけてそれを差し引くことですが、それはミリ秒でなければなりません。

于 2010-10-21T11:16:07.560 に答える
0

ロード時間を計算する最も正確な方法は、サーバー側です。ページが構築されると、ユーザーのブラウザに表示されるまでにかかる時間は次の要素に依存します。

  • 現在のネットワーク トラフィック。
  • ユーザーのコンピューターの仕様。
  • 彼が使用しているブラウザ。

そのため、JavaScript を使用することは大きな対策ではありません。そこには変更できない要素がたくさんあるからです。

あなたができる最善のことは、各ページがサーバー上で生成されるのにかかる時間を測定することです-それを改善することができます.

言うまでもなく、それはコーディングしている言語によって異なります。

于 2009-03-20T14:43:48.090 に答える
0

疑似コード。


server marks start of processing the request.
server sends the output.
    script tag, marks start time.
    rest of html markup.
    client script , with server processing time in ms
    client script with window.load event + server-side time
    client script which sends the total back via an ajax call.
于 2009-03-20T21:33:34.207 に答える
0

できることの 1 つは、Javascript を使用して、サーバーへのポストバックをトリガーするクライアント側イベントが発生した現在の時刻を取得することです。この値をサーバー側に戻すと、比較できる最初の「トリガー」時間としてクライアントに戻すことができます。

onLoad を使用する代わりに、ドキュメントの最後にスクリプトをインラインで配置して、ブラウザーがスクリプトのその部分をレンダリングするとすぐに実行できると思います。これにより、インライン スクリプトが実行された現在の時刻と、ユーザーが通話を開始したときにキャプチャされたトリガー時刻を比較できます。

ただし、Seb が述べたように、確実に制御できるのはサーバー側のロード時間のみであるため、メトリックにサーバー ページの生成時間を含めることをお勧めします。両方のメトリクスがある場合、ページ生成にかかる合計時間と、クライアント側で発生する可能性のあるさまざまな遅延にどれだけ依存しているかを少なくとも確認できます。

于 2009-03-20T14:50:45.017 に答える
0

Pingdom Tools のフル ページ テストが非常に便利だといつも思っています。これはコード内のソリューションではありませんが、ページの読み込み速度 (または読み込み速度) を把握するのに役立ちます。

于 2009-03-20T14:55:29.967 に答える
0

• 転送しているビット数を計算します。(このコンバーターが役立ちます: http://www.matisse.net/bitcalc/ )

• ダウンロード速度を推定または決定します (次のものを使用できます: http://speedtest.net )

• 分ける

于 2013-09-01T16:29:10.363 に答える