.Net: Как смоделировать и измерить полный веб-запрос? - PullRequest
4 голосов
/ 05 января 2010

Я пытаюсь измерить запрос с помощью 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;
        }

    }

Ответы [ 2 ]

1 голос
/ 05 января 2010

Не знаю, подходит ли вам эта опция, но вы можете использовать элемент управления WebBrowser , поскольку он будет запрашивать все элементы страницы перед запуском события DocumentCompleted.

0 голосов
/ 05 января 2010

Ваш код будет измерять только время, необходимое для завершения кода, код не будет ждать, пока все байты поступят к клиенту, что займет значительно больше времени, чем код.

Что и где измеряется, зависит от того, где вы ожидаете провести оптимизацию. Если вы хотите улучшить взаимодействие с клиентом, когда сервер находится под небольшой нагрузкой, то Firebug (или Fiddler) будет хорошим местом для измерения. Если вы не хотите улучшать производительность на сервере, когда он находится под большой нагрузкой, тогда профилировщики кода будут тем инструментом, который вам понадобится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...