【发布时间】:2009-12-03 23:20:37
【问题描述】:
关于优化我的 ASP .NET 应用程序的视图状态,是否有人有任何想法或参考可以向我指出?我不想一起关闭它,优化它的主要目标是提高性能,所以我不想运行昂贵的函数来递归禁用某些控件的视图状态,因为该函数会减慢页面的加载时间会破坏目的。
有什么想法吗?
【问题讨论】:
标签: asp.net optimization viewstate
关于优化我的 ASP .NET 应用程序的视图状态,是否有人有任何想法或参考可以向我指出?我不想一起关闭它,优化它的主要目标是提高性能,所以我不想运行昂贵的函数来递归禁用某些控件的视图状态,因为该函数会减慢页面的加载时间会破坏目的。
有什么想法吗?
【问题讨论】:
标签: asp.net optimization viewstate
这里有一些想法可以优化通过网络传输的 ViewState 的大小 (copied from this answer):
【讨论】:
除了“不要在你的 ViewState 中投入太多”之外,我无法告诉你太多。
我会寻找优化的地方:
GridViews、<x>Lists和Repeaters等数据显示控件。GridViews 对ViewState 尤其不好;您数据绑定的所有内容都进入其中,因此如果您绑定一个特别大的列表,期望 ASP.NET 为您处理它的分页,您将拥有一个巨大的ViewState。解决此问题的唯一方法是一次仅将一页绑定到GridView,但这意味着您必须进行数据端分页,这可能同样痛苦,或者关闭ViewState GridView,这意味着(可以说)有用的功能,如在线编辑不再可用。
这里没有灵丹妙药。
【讨论】:
ViewState 是一种客户端状态管理,它会成为您的请求和响应数据包的一部分,而繁重的视图状态确实会降低您的应用程序性能。优化 ViewState 性能的一种快速选择是将其保留在服务器端并仅在需要时使用它。这是有道理的,因为 ViewState 从未真正在客户端浏览器端使用,并且在您回发时始终需要在服务器端。您可以使用 AppFabric 或 NCache 等分布式缓存系统将 ViewState 存储在服务器端,这将有助于提高性能。
我亲自与 NCache 合作过,它没有用于 ViewState 缓存的代码更改提供程序。
Click here to view the article for ASP.NET View State Caching
【讨论】: