首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ViewState中存储数据会减慢页面加载速度吗?

在ViewState中存储数据会减慢页面加载速度吗?
EN

Stack Overflow用户
提问于 2013-09-07 00:03:04
回答 6查看 2.8K关注 0票数 0

我已经在视图状态中存储了我的数据集(因为我需要过滤不同客户端点击的数据并显示数据),但我觉得页面加载花费了很多时间,即使是没有任何代码要执行的复选框选中事件(使用AutoPostback)也几乎需要2-3秒。

这仅仅是因为视图状态数据,如果是这样的话,是否有任何替代方案可以实现我的任务?而且我需要在客户端事件上快速显示数据,所以我一直在使用视图状态。周围的任何工作都会有所帮助。

EN

回答 6

Stack Overflow用户

发布于 2014-01-09 01:36:49

正如@Tushar上面提到的,ViewState不是你想要存储大量数据的地方。它实际上只是为了保持往返之间的控制状态,而且它真的会导致应用程序性能低下。

相反,您应该研究以下服务器托管选项:

应用程序状态-用于存储所有用户之间共享的数据。使用服务器内存。

会话状态-用于存储特定于用户会话的数据。也使用服务器内存。数据可以通过应用程序重启来持久化,也可以在网络花园或服务器群中持久化。欲了解更多信息,请访问:http://msdn.microsoft.com/en-us/library/z1hkazw7.aspx

这些方法最大的缺点是内存管理,因为这两种方法都会消耗服务器内存,并保留数据,直到某种形式的重新启动,或者直到会话被删除。因此,这些方法并不总是具有良好的伸缩性。

此外,这里有一篇MSDN文章讨论了状态管理的各种.net方法,并指出了每种方法的优缺点:

第三种选择是通过使用.NET caching库、构建自己的库和/或使用第三方缓存服务器/库来实现缓存策略。使用缓存的好处是,您可以让数据在任何给定的指定时间后自动过期。然而,当在网络花园或服务器场环境中工作时,会引入复杂性。

要记住的最重要的一点是,上面提到的任何策略都需要在管理/共享数据方面进行一些规划和考虑。

票数 1
EN

Stack Overflow用户

发布于 2013-09-07 00:10:19

如果您在ViewState中存储大量数据,您会注意到性能问题。尽管ViewState实际上用于“仅限此页面”,会话用于“此会话”,但您将达到ViewState大小的限制,此时会话最终将获得更好的性能。

值得注意的是,您可能遇到了其他类型的问题,而不仅仅是ViewState的问题(例如,您的数据库查询可能需要很长时间,并且可能会被缓存)。

票数 0
EN

Stack Overflow用户

发布于 2013-09-07 00:10:29

由于在页面的ViewState中嵌入了额外的数据来保存序列化的ViewState,因此HTML会使页面稍微变大。额外大小是否会导致加载问题取决于连接速度,以及视图状态相对于页面其余部分的大小。

每个HTTP请求(包括您的AutoPostback)都会将ViewState发送回服务器。同样,这是否会导致明显的性能问题取决于视图状态大小和连接速度。

在宽带(Ish)连接上,典型页面中的ViewState数据量是一样的,您不会看到额外的2-3秒处理时间。

诊断的

使用浏览器中的开发人员工具(在IE中,按F12键)。您可以监控web请求,包括发送和接收的确切标头和正文。您还可以查看每个HTTP请求的时间。如果ViewState不是很大(可能不超过1-2K ),并且您的连接速度不是太慢,这不是您的罪魁祸首。

替代方案

您可以在服务器端完全保留状态,也可以将任何较大的状态项完全放在服务器上。您可以使用Ajax请求来处理依赖于该状态的页面事件。

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

https://stackoverflow.com/questions/18661944

复制
相关文章

相似问题

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