我期望改善我的網站的性能,不是因爲它表現糟糕,而僅僅是作爲一般練習。通常對asp.net網站的建議是儘可能移除viewstate。我相信這可以通過頁面上的每個控件單獨或整個頁面來完成。ASP.NET主頁和視圖狀態
我的問題是,如果我禁用頁面viewstate將停止在母版頁上的控件的視圖狀態(據我所知,母版實際上是頁面上的控件)。
我期望改善我的網站的性能,不是因爲它表現糟糕,而僅僅是作爲一般練習。通常對asp.net網站的建議是儘可能移除viewstate。我相信這可以通過頁面上的每個控件單獨或整個頁面來完成。ASP.NET主頁和視圖狀態
我的問題是,如果我禁用頁面viewstate將停止在母版頁上的控件的視圖狀態(據我所知,母版實際上是頁面上的控件)。
是,頁面的頁面流的鼻祖。因此,禁用頁面的視圖狀態會將視圖狀態渲染爲OnInit進程。更好的問題是爲什麼禁用母版頁的視圖狀態的做法是一樣的?
您可能會發現這篇文章有幫助:
http://msdn.microsoft.com/en-us/library/ms972976.aspx
在優化網站之前,只需簡單記下一邊,是否優化了服務器,確保所有文件在發送前都進行了gzip壓縮。
如果不是這樣,在你開始修補頁面之前,這會給你一個很好的提升。
這裏有一個簡單的方法來縮小所有的視圖狀態。
步驟1.創建一個新的類,它看起來像這樣:
Imports System
Imports System.Web.UI
Public Class SessionPageStateAdapter
Inherits System.Web.UI.Adapters.PageAdapter
Public Overrides Function GetStatePersister() As System.Web.UI.PageStatePersister
Return New SessionPageStatePersister(Page)
End Function
End Class
第2步:添加App_Browsers
文件夾到您的項目。
第3步。在新的App_Browsers
文件夾中,添加一個看起來像這樣的新文件default.browser
。
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page" adapterType="[YourNamespaceGoesHere].SessionPageStateAdapter" />
</controlAdapters>
</browser>
</browsers>
當你現在運行你的頁面時,你會發現你的viewstate大小已經下降到幾個字節。 SessionPageStateAdapter類在將視圖狀態提供給瀏覽器並在Session狀態下將其保存在服務器上之前攔截它。仍然發送給客戶端的視圖狀態位僅僅是一個標識符,用於在頁面被髮送回服務器時重新構建原始視圖狀態。
「不成熟的優化是萬惡的根源」 – stephenbayer 2008-10-14 14:38:14