首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化ViewState

优化ViewState
EN

Stack Overflow用户
提问于 2009-12-04 07:20:38
回答 3查看 4.2K关注 0票数 8

关于优化我的.NET应用程序的视图状态,有没有人可以给我一些建议或参考?我不想一起关闭它,优化它的主要目标是提高性能,所以我不想运行一个昂贵的函数来递归地禁用某些控件的视图状态,因为该函数会减慢页面的加载时间,从而与目的不符。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-04 07:28:38

除了“不要在你的ViewState中放太多”之外,我没有什么可以告诉你的。

我会寻找优化的地方:

  • ViewState
  • 大量数据绑定到数据显示控件(如GridViews<x>Lists和data display控件)

GridViewsViewState特别不好;您的所有数据都会进入其中,所以如果您绑定了一个特别大的列表,希望ASP.NET为您处理它的分页,那么您将拥有一个巨大的ViewState。解决这个问题的唯一方法是一次只将一个页面绑定到GridView,但这意味着您必须在数据端进行分页,这可能同样痛苦,或者关闭GridViewViewState,这意味着(可以说)像内联编辑这样的有用功能将不再可用。

这里没有银弹。

票数 6
EN

Stack Overflow用户

发布于 2009-12-05 22:00:19

以下是如何优化通过网络传输的ViewState (copied from this answer)的大小的一些想法:

针对不需要的控件的

  • Disable ViewState (这是最有效的解决方案)。例如,如果你可以在服务器上缓存一些数据,那么你可以为每个请求重新绑定任何数据绑定控件,而不需要在服务器(IIS)上以HTTP压缩的方式保存ViewState.
  • Turn中的所有内容。这减小了发送到客户端的页面的大小,包括ViewState的ViewState.
  • Compress。与HTTP压缩相比,这有一个额外的优点:它还减小了PostBacks (发送回服务器的数据)的大小,因为ViewState总是在PostBack期间发送回服务器。有多种方法可以做到这一点,例如,如在服务器上的ViewState中所示,而不是将其与页面一起发送到隐藏字段中。要做到这一点,最简单的方法是使用会话(see here for example).

,但也有其他解决方案不使用会话SesionPageStatePersister将ViewState存储到磁盘

票数 9
EN

Stack Overflow用户

发布于 2018-04-03 20:52:53

ViewState是一种客户端状态管理,并成为请求和响应数据包的一部分,而繁重的视图状态确实会降低应用程序的性能。优化ViewState性能的一个快速选择是将其保留在服务器端,并仅在需要时使用它。这是有意义的,因为ViewState从来不会真正在客户端浏览器端使用,而在回发时总是需要在服务器端使用。您可以使用分布式缓存系统(如AppFabric或NCache )在服务器端存储ViewState,这将有助于提高性能。

我曾亲自使用过NCache,它有一个用于ViewState缓存的无代码更改提供程序。

Click here to view the article for ASP.NET View State Caching

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1843784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档