2010-01-05 32 views
4

我試圖用WebRequest來測量一個請求,.Net:如何模擬和測量完整的Web請求?

但是,我用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; 
     } 

    } 
+0

您的代碼可能只檢索頁面,並沒有考慮渲染,它包含了HTML和解決任何資源的後續步驟,例如,它包括圖像。我的提示將是調查使用瀏覽器控制。 – 2010-01-05 11:36:42

+0

瀏覽器控件僅在Win Forms中可用。有沒有一種方法可以通過代碼進行模擬,以便它可以成爲Web應用程序的一部分? – SirMoreno 2010-01-05 11:45:45

回答

1

我不知道它是否適合您,但您可以使用WebBrowser控件,因爲它會在觸發DocumentCompleted事件之前請求頁面的所有元素。

0

您的代碼將只測量需要多長時間的代碼完成,代碼將不會等待所有的字節到達客戶端,這將顯著需要更長的時間比代碼。

什麼,在哪裏措施取決於你希望做的優化。如果你想改善客戶體驗當服務器是輕負載,然後螢火蟲(或小提琴手)下將是衡量的好地方。如果您不想在服務器負載過重的情況下提高性能,那麼代碼分析器就會是您需要的那種工具。