优化ViewState

Ada*_*dam 8 asp.net viewstate optimization

有没有人有任何想法或参考,他们可以指出我有关优化我的ASP .NET应用程序的视图状态?我不想一起关闭它,优化它的主要目标是加快性能,所以我不想运行昂贵的函数来递归地禁用某些控件的viewstate,因为该函数会减慢加载页面的时间会破坏目的.

有任何想法吗?

M4N*_*M4N 9

以下是一些如何优化通过线路传输的ViewState大小的想法(从此答案中复制):

  • 对不需要它的控件禁用ViewState(这是最有效的解决方案).例如,如果您可以在服务器上缓存一些数据,那么您可以将任何数据绑定控件与每个请求重新绑定,而不需要在ViewState中保存所有内容.
  • 在服务器(IIS)上启用HTTP压缩.这减少了发送到客户端的页面大小,包括ViewState.
  • 压缩ViewState.与HTTP压缩相比,这还有一个额外的优势:它还减少了PostBacks(发送回服务器的数据)的大小,因为ViewState总是在PostBack期间发送回服务器.有各种方法,例如,如本博文所示.
  • 将ViewState存储在服务器上,而不是将其发送到带有页面的隐藏字段中.最简单的方法是使用SesionPageStatePersister,但还有其他解决方案将ViewState存储到磁盘而不是使用Session(请参阅此处).


Ran*_*pho 6

我不能告诉你很多,除了"不要把很多东西放进去ViewState".

我寻找优化的地方:

  • 您自己添加到ViewState的任何内容
  • 大量的数据绑定到数据显示控制等GridViews,<x>ListsRepeaters.

GridViews特别糟糕ViewState; 你数据绑定所涉及的一切,所以如果你绑定一个特别大的列表,期望ASP.NET为你处理它的分页,你将有一个巨大的ViewState.要解决这个问题的唯一办法是只在一个时间来绑定一个页面GridView,但是这意味着你必须做数据端分页,它可以是一样的痛苦,或者关闭ViewStateGridView,这意味着(可以说)不再提供在线编辑等有用功能.

这里没有银弹.