1

我刚刚在我的一个页面上遇到了性能问题。base.PreRender需要超过 12 秒:

aspx.page   Begin PreRender 0.00577958119283298 0.000009
aspx.page   End PreRender   12.3006780015036    12.294898

如何诊断在 PreRender 阶段到底发生了什么?起初我认为这是数据库获取的问题,但据我所知,当 PreRender 发生时,所有数据绑定都已完成。

可能是 ViewState 是问题所在吗?

编辑:我已将此诊断代码添加到我的页面:

    protected override void OnPreRender(EventArgs e)
    {
        Trace.Write("OnPreRender", "Start");
        base.OnPreRender(e);
        Trace.Write("OnPreRender", "End");
    }

实际上Trace.Write("End");line 是立即执行的。这是跟踪输出

aspx.page   Begin PreRender 0.233399419245709   0.000010
OnPreRender Start   0.233407218080441   0.000008
OnPreRender End 0.233415320448565   0.000008
aspx.page   End PreRender   1.45992676325022    1.226511
4

1 回答 1

3

每个在页面上带有runat="server"标签的 Web 控件也将有一个OnPreRender()独立于 page.aspx 调用的方法OnPreRender()。如果您在页面上有任何自定义控件,则可能值得将相同的诊断代码放入他们的OnPreRender()方法中以进一步查找故障。

(很抱歉写这个作为答案 - 还没有足够的代表发表评论!)

于 2012-09-07T13:48:17.310 回答