PreRenderComplete和SaveState之间的时间差
问题描述:
我们正在跟踪我们的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
我们试图了解这背后是否有任何理由。请帮我理解这一点。
由于提前
答
根据反射器,这两个事件之间发生的唯一的事是一些代码,建立与跟踪输出(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");
}
所以,讽刺的是,你在上面看到的放缓的事实,你跟踪你的网页,并不会在那里,如果跟踪被禁用而引起的。
不错。谢谢,这整天烦扰我:-) – nothrow 2011-09-30 12:18:55