Asp.net

優化 ViewState

  • April 3, 2018

關於優化我的 ASP .NET 應用程序的視圖狀態,有沒有人可以指出我的任何想法或參考?我不想一起關閉它,優化它的主要目標是提高性能,所以我不想執行昂貴的函式來遞歸禁用某些控制項的視圖狀態,因為該函式會減慢頁面的載入時間會破壞目的。

有任何想法嗎?

除了“不要在你的身上投入太多”,我無法告訴你太多ViewState

我會尋找優化的地方:

  • 您自己添加到 ViewState 的任何內容
  • 大量數據綁定到數據顯示控制項,如GridViews<x>ListsRepeaters

GridViews尤其不好ViewState;您數據綁定的所有內容都進入其中,因此如果您綁定一個特別大的列表,期望 ASP.NET 為您處理它的分頁,您將擁有一個巨大的ViewState. 解決此問題的唯一方法是一次只將一頁綁定到,但這意味著您必須進行GridView數據端分頁,這可能同樣痛苦,或者關閉) 內聯編輯等有用功能不再可用。ViewState``GridView

這裡沒有靈丹妙藥。

以下是一些如何優化通過網路傳輸的 ViewState 大小的想法(從這個答案複製):

  • 對不需要的控制項**禁用 ViewState (這是最有效的解決方案)。**例如,如果您可以在伺服器上記憶體一些數據,那麼您可以為每個請求重新綁定任何數據綁定控制項,並且不需要將所有內容保存在 ViewState 中。
  • 在伺服器 (IIS) 上打開 HTTP 壓縮。這會減小發送到客戶端的頁面大小,包括 ViewState。
  • 壓縮 ViewState。這比 HTTP 壓縮有一個額外的優勢:它還減少了 PostBacks(發送回伺服器的數據)的大小,因為 ViewState 在 PostBack 期間總是被發送回伺服器。有多種方法可以解決這個問題,例如本部落格文章中所示。
  • **將 ViewState 儲存在伺服器上,**而不是將其與頁面一起發送到隱藏欄位中。最簡單的方法是使用SesionPageStatePersister,但還有其他解決方案將 ViewState 儲存到磁碟而不是使用 Session (例如,請參見此處)。

引用自:https://stackoverflow.com/questions/1843784