【问题标题】:ASP.NET Masterpages and viewstateASP.NET 母版页和视图状态
【发布时间】:2017-01-12 17:02:47
【问题描述】:

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

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

【问题讨论】:

  • “过早的优化是万恶之源”
  • 这篇文章可能对您有所帮助:msdn.microsoft.com/en-us/library/ms972976.aspx>
  • 那么这就是“过早的优化是万恶之源”吗? :-p

标签: asp.net master-pages viewstate


【解决方案1】:

有一种简单的方法可以缩小所有视图状态。

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

【讨论】:

    【解决方案2】:

    是的,页面是页面流的发起者。因此,禁用页面的视图状态会将视图状态渲染从 OnInit 进程中取出。一个更好的问题是为什么禁用母版页的视图状态会产生同样的效果?

    【讨论】:

      【解决方案3】:

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

      如果不是这样,您甚至可以在开始修改页面之前获得很好的提升。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多