我希望改善我网站的性能,不是因为它的表现很差,而是一般的练习。 asp.net网站的通常建议是尽可能删除viewstate。我相信这可以通过单独的页面上的每个控件或整个页面来完成。
我的问题是,如果我禁用页面viewstate将停止母版页上的控件的视图状态(据我所知,母版页实际上是页面上的控件)。
答案 0 :(得分:3)
有一种简单的方法可以缩小所有视图状态。
步骤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>
现在运行您的页面时,您会发现您的视图状态大小已降至几个字节。 SessionPageStateAdapter类在将视图状态提供给浏览器之前拦截它,并将其保存在处于会话状态的服务器上。仍然被发送到客户端的视图状态只是一个标识符,用于在页面回发到服务器时重新构建原始视图状态。
答案 1 :(得分:1)
您可能会发现这篇文章很有帮助:
http://msdn.microsoft.com/en-us/library/ms972976.aspx
答案 2 :(得分:1)
是的,该页面是页面流的创建者。因此,禁用页面的视图状态会使视图状态呈现出OnInit进程。一个更好的问题是为什么禁用母版页的视图状态也会这样做?
答案 3 :(得分:1)
在优化网站之前,只需快速注意一下,您是否通过确保在发送之前对所有文件进行了压缩来优化服务器。
如果不是这样,在你开始修改页面之前,这会给你一个很好的提升。