我们正在跟踪我们的ASP.NET应用程序,发现对于我们的一个页面,我们发现从PreRenderComplete结束到SaveState开始的时间滞后约2.5秒。以下是日志的一部分
aspx.page End 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 End SaveStateComplete 11.77461284 0.000016
aspx.page开始渲染11.77462541 0.000013
aspx.page End Render 15.10157813 3.326953
我们试图了解这背后是否有任何理由。请帮助我理解这一点。
先谢谢
答案 0 :(得分:4)
根据Reflector,这两个事件之间发生的唯一事情是构建用于跟踪输出(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");
}
所以,具有讽刺意味的是,您在上面看到的减速是由于您正在跟踪您的页面而导致的,如果禁用了跟踪,则不会出现这种情况。