我正在尝试使用WebRequest测量请求,
但是我使用FireBug进行测量后会得到显着较小的结果。
我猜这是因为没有包含像图像和CSS这样的内容。
有没有办法衡量完整的网络请求?
我的代码:
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;
}
}
答案 0 :(得分:1)
我不知道它是否适合您,但您可以使用WebBrowser控件,因为它会在触发DocumentCompleted
事件之前请求页面的所有元素。
答案 1 :(得分:0)
您的代码只会测量代码完成所需的时间,代码不会等待所有字节到达客户端,这将花费比代码长得多的时间。
衡量的内容和位置取决于您希望进行优化的位置。如果您想在服务器轻负载时改善客户端的体验,那么Firebug(或Fiddler)将是一个测量的好地方。如果您在服务器负载不足时不想提高性能,那么代码分析器就是您需要的那种工具。