ASP.NET母版页和视图状态

ASP.NET母版页和视图状态,asp.net,master-pages,viewstate,Asp.net,Master Pages,Viewstate,我希望提高我的网站的性能,不是因为它表现不好,而是作为一个一般性的练习。对于asp.net站点,通常建议尽可能删除viewstate。我相信这可以由页面上的每个控件单独完成,也可以为整个页面完成 我的问题是,如果禁用页面视图状态,这会停止母版页上控件的视图状态(据我所知,母版页实际上是页面上的控件) 是,页面是页面流的发起人。因此,禁用页面的viewstate会使viewstate呈现脱离OnInit进程。一个更好的问题是,为什么禁用母版页的viewstate也会这样做?在优化网站之前,请先简要

我希望提高我的网站的性能,不是因为它表现不好,而是作为一个一般性的练习。对于asp.net站点,通常建议尽可能删除viewstate。我相信这可以由页面上的每个控件单独完成,也可以为整个页面完成


我的问题是,如果禁用页面视图状态,这会停止母版页上控件的视图状态(据我所知,母版页实际上是页面上的控件)

是,页面是页面流的发起人。因此,禁用页面的viewstate会使viewstate呈现脱离OnInit进程。一个更好的问题是,为什么禁用母版页的viewstate也会这样做?

在优化网站之前,请先简要说明一下,您是否已通过确保所有文件在发送之前都经过gzip处理来优化服务器

如果不是这样的话,在你开始修改页面之前,这会给你一个很好的提升


有一种简单的方法可以缩小所有viewstate

第一步。创建如下所示的新类:

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
第二步。将
App\u浏览器
文件夹添加到项目中

第三步。在新的
App\u Browsers
文件夹中,添加一个新的
default.browser
文件,如下所示。







现在运行页面时,您应该会发现viewstate大小已降至几个字节。SessionPageStateAdapter类在将viewstate提供给浏览器之前拦截viewstate,并在会话状态下将其保留在服务器上。仍然被发送到客户端的viewstate只是一个标识符,当页面返回到服务器时,该标识符用于重建原始viewstate。

“过早优化是万恶之源”您可能会发现这篇文章很有帮助:那么这就是“过早优化是万恶之源”?:-P