2

ブログの 1 つのタイミング列には、当然のことながら、クライアントの送信タイミングが含まれます。異常分析のために、構築に過度に時​​間がかかったページと、クライアントの処理速度が遅かっただけのリクエストを区別したいと考えています。

バッファリングされたページについては、ASP.NET ページ ライフサイクル モデルを調べましたが、ページがクライアントにフラッシュされる前のページ処理時間だけをコード単位で測定できる場所がわかりません。

おそらく、私の目標は本番環境の監視 (テストや開発ではありません) であると言及すべきでした。さらに、後で分析するために、この測定値でウェブログに注釈を付けることを目的としています。現在、Response.AppendToLog() を使用してブログに自由に注釈を付けています。Response.AppendToLog() を使用したいという願望は、潜在的なログポイントをいくらか制限すると思います。たとえば、応答オブジェクトは Application_EndRequest では実行できません。

任意の洞察をいただければ幸いです。

4

5 に答える 5

2

他の 2 つの回答で述べたように、BeginRequest と PreSendRequestContent でストップウォッチを使用するか、PreSendRequestContent でリクエストのタイムスタンプを使用することができます。

たとえば、SingingEelsでは、これをマスター ページの下部に追加しました (はい、これはハックです)。<%=DateTime.Now.Subtract(HttpContext.Current.Timestamp).TotalSeconds %>

そうすれば、データベースへのアクセスなどを含め、サーバー上で実際にページが実行されるのにかかった時間を確認できます。

于 2008-09-16T12:16:35.447 に答える
0

最も簡単な方法は、global.asaxファイルの次のイベントを使用することです。

protected void Application_BeginRequest(Object sender、EventArgs e)
protected void Application_EndRequest(Object sender、EventArgs e)

カスタムhttpmoduleを実装することもできます

于 2008-09-16T12:04:45.147 に答える
0

これは、使用しているパフォーマンス ツールの機能セットによって異なります。ただし、処理時間を記録する必要があるだけの場合は、このアプローチに従うことができます。

  1. HttpApplication.BeginRequestイベントに開始時刻を記録します。
  2. 経過時間をHttpApplication.PreSendRequestContentイベントに記録します。

特定のページだけが必要な場合は、BeginRequest イベントでこれを確認できます。アプリケーション イベントは、Global.asax に添付できます。

于 2008-09-16T12:09:46.507 に答える
0

特定のページにログオンしたい場合、asp.net ページのライフサイクルは PreInit で始まり、Disposed で終わるので、これらのイベントで必要なものをすべてログに記録できます。

または、Bob Dizzle が指摘したように、すべてのページにログオンする場合は、Global.asax ファイルを使用できます。このファイルには、1000 のイベントから選択できます。 /2027ewzw.aspx

于 2008-09-16T12:11:23.930 に答える
0

Web サーバー上でテストを行うこともできます。その後、ClientTransmission 時間は事実上 0 になります。

于 2008-09-16T13:21:47.643 に答える