2012-09-07 66 views
1

我剛剛在我的一個頁面上遇到了性能問題。 base.PreRender需要更多的12然後秒時:PreRender階段很慢

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");線。這是跟蹤輸出

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 
+0

此頁面在做什麼? – Paddy

+0

簡而言之:將IEnumerable 綁定到GridView。只是顯示數據。 – dragonfly

+0

如果您認爲viewstate可能是問題,您是否嘗試禁用它並查看它是否更好? – Chris

回答

3

runat="server"標籤頁上也將有一個OnPreRender()方法被稱爲獨立的page.aspx OnPreRender()的每個Web控制。如果您在頁面上有任何自定義控件,則可能需要將相同的診斷代碼放在其OnPreRender()方法中,以便進一步進行故障查找。

(抱歉,將此文章作爲答案 - 尚未得到足夠的代表評論!)

+1

不需要道歉......它似乎是答案,不應該屬於評論無論如何。 – bytebender