2008-09-16 20 views
2

網絡日誌中的單個時間列自然包含客戶端傳輸時間。對於分析性分析,我想區分那些耗時過長的頁面與只有慢速客戶端的請求。ASP.net - 如何區分網頁處理時間與客戶端傳輸時間

對於緩衝頁面,我已經查看了ASP.NET頁面生命週期模型,並沒有看到我可以在哪裏點擊,並且在頁面刷新到客戶端之前以代碼方式測量頁面處理時間。

我可能應該提到我的目標是生產監控(而不是測試或開發)。此外,其目的是爲了以後的分析,用這個度量標註weblog。目前我們用Response.AppendToLog()自由註釋博客。我相信使用Response.AppendToLog()的願望在某種程度上限制了我的潛在登錄點,例如,響應對象在Application_EndRequest中不可行。

任何有識之士將不勝感激。

回答

0

的easist的方式很可能是使用後續事件在Global.asax文件:

保護無效的Application_BeginRequest(對象發件人,EventArgs的)
保護無效Application_EndRequest(對象發件人,EventArgs的)

您也可以實現自定義httpmodule

0

這取決於您擁有的性能工具的功能集。但是如果你只需要記錄處理時間,那麼你可以採用這種方法。

  1. HttpApplication.BeginRequest事件中記錄開始時間。
  2. HttpApplication.PreSendRequestContent事件中記錄已用時間。

如果你只是想要一個特定的頁面,那麼你可以在BeginRequest事件中檢查這個。 應用程序事件可以附加在Global.asax中。

0

如果您想登錄特定頁面,我相信asp.net網頁的生命週期以PreInit開頭並以Disposed結束,因此您可以在這些事件中記錄任何您想要的內容。

或者,如果你想記錄每一個頁面上,鮑勃·Dizzle指出的那樣,你可以使用Global.asax文件,其中有一千事件可供選擇:http://msdn.microsoft.com/en-us/library/2027ewzw.aspx

2

你可以在使用秒錶BeginRequest和PreSendRequestContent,如其他兩個答案中所述,或者您可以在PreSendRequestContent中使用請求的時間戳。

例如,在SingingEels,我已將此添加到我的母版頁的底部(是的,這是一個黑客):<%=DateTime.Now.Subtract(HttpContext.Current.Timestamp).TotalSeconds %>

這樣我可以看到任何網頁了很長時間才真正在服務器上執行,包括點擊數據庫等。

+0

啊我喜歡那樣。我可能必須執行並檢查出來。謝謝你的提示! – 2008-10-03 05:22:51

0

您也可以在Web服務器上進行測試。然後ClientTransmission時間變爲0.

相關問題