.NET:完全なWebリクエストをシミュレートして測定する方法は?
-
18-09-2019 - |
質問
WebRequestでリクエストを測定しようとしています。
しかし、Firebugで測定してから、大幅に小さな結果が得られています。
画像やCSSなどの一部のコンテンツが含まれていないためだと思います。
完全なWebリクエストを測定する方法はありますか?
私のコード:
public string GetPageHtmlTime(string strUrl)
{
WebRequest request = null;
WebResponse response = null;
HttpWebResponse httpCurrentWeResponse = null;
try
{
//making a request to the file.
request = WebRequest.Create(strUrl);
//set 5 seconds timeout for the request
request.Timeout = 5 * 1000;
//Stopwatch
Stopwatch sw = new Stopwatch();
sw.Start();
//get the server response
response = request.GetResponse();
httpCurrentWeResponse = (HttpWebResponse)response;
sw.Stop();
//if the http response return any type of failure
if (httpCurrentWeResponse.StatusCode != HttpStatusCode.OK || response == null)
return "Error: " + httpCurrentWeResponse.StatusCode;
response.Close();
//Return time:
return "OK time=" + sw.ElapsedMilliseconds.ToString("0,0");
}
catch (System.Exception ex)
{
return "Error: ex=" + ex.Message;
}
}
解決
それがあなたのためのオプションかどうかはわかりませんが、あなたは ウェブブラウザ 発射する前にページのすべての要素を要求するため、制御します DocumentCompleted
イベント。
他のヒント
コードは、コードが完了するのに時間がかかる時間のみを測定します。コードは、すべてのバイトがクライアントに到達するのを待機せず、コードよりもかなり長くなります。
測定は何とどこで最適かを期待する場所に依存します。サーバーが光負荷になっているときにクライアントでのエクスペリエンスを改善したい場合、FireBug(またはFiddler)は測定するのに適した場所になります。サーバーが重い負荷がかかっている場合、サーバーのパフォーマンスを改善しない場合、コードプロファイラーは必要なツールのようなものになります。
所属していません StackOverflow