2010-08-05 44 views
4

我們正在跟蹤我們的ASP.NET應用程序,發現對於我們的其中一個頁面,我們發現從PreRenderComplete結束到SaveState開始的時間大約有2.5秒的時間滯後。下面是日誌的一部分PreRenderComplete和SaveState之間的時間差

aspx.page結束的PreRender 9.123185387 0.184541

aspx.page開始PreRenderComplete 9.123277718 0.000092

aspx.page結束PreRenderComplete 9.123666575 0.000389

aspx.page開始SaveState 11.77441916 2.650753

aspx.page End SaveState 11.77457158 0.000152

aspx.page開始SaveStateComplete 11.77459695 0.000025

aspx.page結束SaveStateComplete 11.77461284 0.000016

aspx.page開始渲染11.77462541 0.000013

aspx.page結束渲染15.10157813 3.326953

我們試圖瞭解這背後是否有任何理由。請幫我理解這一點。

由於提前

回答

4

根據反射器,這兩個事件之間發生的唯一的事是一些代碼,建立與跟蹤輸出(BuildPageProfileTree)所使用的控件樹。此代碼僅在啓用跟蹤時運行。下面是來自ProcessRequestMain程序的相關部分的頁面:

if (context.TraceIsEnabled) 
{ 
    this.Trace.Write("aspx.page", "End PreRenderComplete"); 
} 
if (context.TraceIsEnabled) 
{ 
    this.BuildPageProfileTree(this.EnableViewState); 
    this.Trace.Write("aspx.page", "Begin SaveState"); 
} 

所以,諷刺的是,你在上面看到的放緩的事實,你跟蹤你的網頁,並不會在那裏,如果跟蹤被禁用而引起的。

+0

不錯。謝謝,這整天煩擾我:-) – nothrow 2011-09-30 12:18:55