4

我正在尝试使用 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;
        }

    }
4

2 回答 2

1

我不知道这是否适合您,但您可以使用WebBrowserDocumentCompleted控件,因为它会在触发事件之前请求页面的所有元素。

于 2010-01-05T11:34:03.660 回答
0

您的代码只会测量代码完成所需的时间,代码不会等待所有字节到达客户端,这将比代码花费更长的时间。

衡量什么以及在哪里衡量取决于您希望在哪里进行优化。如果您想在服务器处于轻负载状态时改善客户端的体验,那么 Firebug(或 Fiddler)将是一个测量的好地方。如果您不想在服务器负载过重时提高其性能,那么代码分析器将是您需要的那种工具。

于 2010-01-05T11:33:55.540 回答