Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 优化视图状态_Asp.net_Optimization_Viewstate - Fatal编程技术网

Asp.net 优化视图状态

Asp.net 优化视图状态,asp.net,optimization,viewstate,Asp.net,Optimization,Viewstate,关于优化ASP.NET应用程序的viewstate,有人有什么想法或参考资料吗?我不想同时关闭它,优化它的主要目标是提高性能,所以我不想运行一个昂贵的函数来递归地禁用某些控件的viewstate,因为该函数会降低页面的加载时间,这将无法达到预期目的 有什么想法吗?除了“不要在视图状态中投入太多”之外,我能告诉你的不多 我会寻找优化的地方: 您添加到ViewState中的任何内容 大量数据绑定到数据显示控件,如gridview、列表、和中继器 gridview在ViewState方面尤其糟糕;

关于优化ASP.NET应用程序的viewstate,有人有什么想法或参考资料吗?我不想同时关闭它,优化它的主要目标是提高性能,所以我不想运行一个昂贵的函数来递归地禁用某些控件的viewstate,因为该函数会降低页面的加载时间,这将无法达到预期目的


有什么想法吗?

除了“不要在
视图状态中投入太多”之外,我能告诉你的不多

我会寻找优化的地方:

  • 您添加到ViewState中的任何内容
  • 大量数据绑定到数据显示控件,如
    gridview
    列表
    、和
    中继器
gridview
ViewState
方面尤其糟糕;数据绑定的所有内容都会进入其中,因此如果您绑定一个特别大的列表,希望ASP.NET为您处理它的分页,那么您将拥有一个巨大的
视图状态。解决这个问题的唯一方法是一次只将一个页面绑定到
GridView
,但这意味着您将不得不进行数据端分页,这可能同样痛苦,或者关闭
GridView
ViewState
,这意味着(可以说)像在线编辑这样的有用功能不再可用


这里没有银弹

以下是一些如何优化通过线路传输的ViewState大小的想法():

  • 对不需要的控件禁用ViewState(这是最有效的解决方案)。例如,如果可以在服务器上缓存一些数据,则可以将任何数据绑定控件与每个请求重新绑定,而无需将所有内容保存在ViewState中
  • 在服务器(IIS)上启用HTTP压缩。。这会减小发送到客户端的页面大小,包括ViewState
  • 压缩视图状态。与HTTP压缩相比,这还有一个额外的优势:它还减少了回发(发送回服务器的数据)的大小,因为回发过程中始终会将ViewState发送回服务器。为此有多种方法,如中所示
  • 将ViewState存储在服务器上,而不是将其与页面一起发送到隐藏字段中。最简单的方法是使用,但还有其他解决方案将ViewState存储到磁盘,而不是使用会话()
ViewState是客户端状态管理,成为请求和响应数据包的一部分,重ViewState确实会降低应用程序的性能。优化ViewState性能的一个快速选项是将其保留在服务器端,并仅在需要时使用。这是有道理的,因为ViewState从来没有在客户端浏览器端真正使用过,并且在回发时总是需要在服务器端使用。您可以使用分布式缓存系统(如AppFabric或NCache)在服务器端存储ViewState,这将有助于提高性能

我个人曾与NCache合作,它有一个用于ViewState缓存的无代码更改提供程序


起初,我试图找出一种在系统范围内实现viewstate优化的方法,但我越想越得出结论,这将是一个逐个控制的过程。谢谢伟大的谢谢您是否大致知道,就服务器执行而言,viewstate压缩和在会话中存储viewstate的成本是否很高。周一我仍将尝试这两种方法,只是为了用我的应用程序进行测试,但我想知道您过去是否对这两种方法有过好的/不好的经验,它会降低服务器的速度。对于一个倾向于产生大量ViewState的web应用程序,我使用了第四种方法。该应用程序在任何时候都只被少数用户使用,因此在这种情况下,增加的内存使用不是问题。我使用第三个选项进行了一些测试,但到目前为止还没有进行任何测试/测量(从未在生产中使用过)。通常我会尽可能地禁用/最小化ViewState(选项1)。@Adam:ViewState压缩比我的需要占用更多的CPU/RAMread@Shide-谢谢你的提示!