FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 1646|回复: 1
打印 上一主题 下一主题

如果grid的数据库会保存在viewstate中,那是不合理的

[复制链接]
跳转到指定楼层
楼主
发表于 2014-8-4 13:46:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在看:[原创]ExtAspNet秘密花园(十六) — 表格之排序与分页http://www.cnblogs.com/sanshi/archive/2012/10/05/2712170.html
其中有一如下一段描述:我想问的是,现在v4.1还是用这个机制吗?
如果还是这样的机制,我觉得是不合理的,因为没有必要把所有数据保存在viewstate中,这一点,无论是原生的asp.net,还是类似于devexpress,telerik都没有在viewstate中保存grid的数据源。因为数据源应该在回传后,在服务端再次获取,或者保存在服务端。

===原文的描述===========================
为什么说内存分页在大数据时性能差?其实原因前面已经提到了,主要是因为内存分页时会把所有表格数据保存到页面的状态视图中(ViewState),导致页面大小迅速增加,从而增加网络下载上载的时间,并且减慢了页面的渲染速度。

虽然ExtAspNet放弃了在ViewState中保存数据,从而可以在Ajax的环境中减少网络的数据传输量,但是内存分页时所有的表格数据还是要保存下来,供下次分页时使用。
拿本篇文章中的内存分页示例,在用户点击下一页时,通过FireBug可以看到这次HTTP Post请求:
......
......
由此可见,全部的11条数据在每次页面回发时都会作为HTTP Post的参数上传到服务器,从而在大数据量的情况下导致页面性能急剧下降。
沙发
发表于 2014-8-4 14:00:55 | 只看该作者
原生的ASP.NET的GridView是将表格数据保存在ViewState的。

因为原生ASP.NET是不支持AJAX的,因此每次回发时页面都重新渲染,如果不将表格数据保存在ViewState,并且在回发时不进行重新绑定,回发后表格就会被清空。这是道理,你也可以自己写个例子测试下。


这个地方以后FineUI会有进一步改进。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-26 00:39 , Processed in 0.042792 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表