2009-09-30 54 views
2

說,我想計算加載ASP.NET頁面所用的時間。當用戶鍵入URL,並按下回車,將發生以下事件:在ASP.NET頁面上計算加載時間

  1. 請求被髮送到服務器
  2. 服務器處理請求,執行任何負載的服務器端邏輯,使DB調用
  3. 瀏覽器接收
  4. 瀏覽器上運行的客戶端邏輯(上負載Javascript函數)
  5. 瀏覽器呈現頁面
響應,下載HTML和JS文件

如果我想衡量對各操作的時間,我的理解是,我可以使用以下工具:

  1. 對於(1),使用Fiddler在網絡
  2. 計算時間對於(2),接通跟蹤以計算時間爲服務器側處理
  3. 對於(3),使用Fiddler計算採取下載
  4. 的時間爲(4),使用螢火蟲用於通過JS功能所花費的時間

總結1到4給出總共花費的時間。

我的想法是否正確?有沒有一種工具可以完成所有這些工作?有沒有更簡單的方法

回答

4

Firebug實際上會給你1和3以及「淨」選項卡,並提供了很好的小分裂圖形條,顯示響應時間的組成部分(DNS查找,查詢服務器,等待第一個字節,下載時間)。

由於服務器代碼正在服務器上運行,客戶端代碼正在客戶端上運行,所以實際上並沒有一種工具可以同時進行客戶端和服務器測量。您可以簡單地通過從總和中減去所有其他時間來估算,但最準確的服務器結果確實來自服務器本身。

+0

儘管服務器端代碼在服務器上運行,因爲客戶端仍在等待,而這種情況正在發生,爲什麼不能我們在客戶端捕獲這個? – Nick 2009-09-30 18:14:24

+0

客戶端確實將其捕獲,作爲響應時間的一部分。但是,這也考慮到流量必須經過的每個網絡跳躍以及讀取時間(TTFB,TTLB),所以它不會像服務器的計算那樣準確,這可以啓動計時器爲只要請求是接收方,並在寫入輸出之前立即停止。 – womp 2009-09-30 18:17:27

+0

那麼,可以肯定地說響應時間包括步驟1,2,3? – Nick 2009-09-30 18:21:24

0

Visual Round Trip Analyzer是一個很好的程序,它使用NetMon來計算你的步驟#1,2,& 3.它可以告訴你你的網絡需要多少時間和服務器上的處理時間。

步驟#4是困難的,因爲不同的瀏覽器將開始以不同的時間顯示內容。

1

有firefox的插件,支持這方面的需求:

Google Page Speed - 這個工具可以讓你記錄Web活動現場,然後查看請求的每個部分。他們需要多長時間以及哪些組件並行運行。

此外,如果您正在尋找優化頁面,YSlow可以提供其他建議,但它不會提供您要求的特定數據。

+0

谷歌網頁速度還需要FireBug – Nirlep 2009-09-30 18:16:59

+0

YSlow是否覆蓋了步驟1,2,3,4? – Nick 2009-09-30 18:23:01

+0

我不好的YSlow只是一個有用的優化工具,它並沒有告訴你真正的往返請求時間。谷歌網頁速度確實顯示了這一點,這對確定真正的瓶頸在哪裏非常有幫助。 – 2009-09-30 21:57:52

0

爲什麼不在.NET中使用瀏覽器控件並創建自己的應用程序來測試從初始請求到最終響應所用的時間?

0

對於點2號,

Global.asax的

Private sw As Stopwatch = Nothing 
Private Sub Global_asax_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.BeginRequest 
    sw = Stopwatch.StartNew 
End Sub 

Private Sub Global_asax_EndRequest(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.EndRequest 
    If sw IsNot Nothing Then 
     sw.Stop() 
     Response.Write("<b>took " & sw.Elapsed.TotalSeconds.ToString("0.#######") & " seconds to generate this page</b>") 
    End If 
End Sub 
+0

這個假設是單個用戶......如果你每秒有80個請求,那該怎麼辦...... – 2010-01-10 18:53:22

+0

@mrHinsh,這是他問的問題 – Fredou 2010-01-10 20:12:26