3

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

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

4

3 回答 3

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 类在将视图状态提供给浏览器之前拦截它,并将其以会话状态保存在服务器上。仍然发送到客户端的视图状态位只是一个标识符,用于在页面回发到服务器时重构原始视图状态。

于 2008-10-15T09:09:08.280 回答
1

是的,页面是页面流的发起者。因此,禁用页面的视图状态会将视图状态呈现出 OnInit 进程。一个更好的问题是为什么禁用母版页的视图状态会做同样的事情?

于 2008-10-14T15:06:17.730 回答
1

只是在优化站点之前的一个快速说明,您是否通过确保所有文件在发送之前都经过 gzip 压缩来优化服务器。

如果不是这样,这将在您开始修改页面之前给您带来很好的提升。

http://www.codinghorror.com/blog/archives/000059.html

于 2008-10-14T17:16:31.010 回答