2010-01-05 4 views
4

Я пытаюсь измерить запрос с помощью WebRequest,.Net: как имитировать и измерять полный веб-запрос?

Но я получаю значительно меньшие результаты, а затем измерения с помощью 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

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

+0

Управление браузером доступно только в Win Forms. Есть ли способ имитировать код только, чтобы он мог быть частью веб-приложения? – SirMoreno

ответ

1

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

0

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

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