2010-08-05 38 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