jQuery MiniUI
标题:
datagrid控件占用内存问题
[打印本页]
作者:
xich8896
时间:
2013-4-22 11:04:16
标题:
datagrid控件占用内存问题
本帖最后由 xich8896 于 2013-4-22 11:05 编辑
网页中用定时器每隔3秒钟调用一次reload()方法,以达到实时自动刷新页面的目的,每次返回50行数据,在firefox,chrome中CUP点用4~8%,内存占用基本不变,性能不错。但在IE(6,7,8)中,CUP占用稍高(20%~35%),最严重的问题是内存占用,从最初的50M左右一直涨到1300M左右,只用了2个多小时,最终页面崩溃。
function pTimer() {
setTimeout("pTimer()", 3000);
grid.reload();//IE中内存一直在涨
}
以前做过类似功能,采用的做法是在服务器端直接生成内容"table"代码(不生成json格式数据),然后在前端采用ajax每隔3秒得到一次服务器端生成的"table"代码,并显示。
function pTimer() {
setTimeout("pTimer()", 3000);
$("#前端容器").load(tUrl);//服务器端生成"table"代码
}
这样的好处是不用在浏览器端分析json数据再生成"table"代码,大大降低前端的工作量,性能很棒。实时显示(每3秒自动刷新一次)1000行数据(没有采用动态加载和分页),IE浏览器CUP只有3~7%左右,内存无增长。这种方式已开发的软件已安装近千用户,没有在性能方面提出异议。
作者:
niko
时间:
2013-4-22 11:28:29
明白了,我们处理下~
作者:
niko
时间:
2013-4-23 10:30:10
我们仔细测试了下:
1.每次刷新后,只有几十k的内存增长量,而这个是JS对象创建和销毁时带来的一些开销,几乎无法避免。
2.其次,建议你在定时刷新表格这个业务场景,还是自己拼接table实现,最轻量最经济。
因为datagrid控件有大量功能和内部细节,一次销毁创建只增长几十k,已经是非常优化了,几乎无法再提升了,而且提升的意义也不是很大。
作者:
xich8896
时间:
2013-4-24 10:38:37
niko 发表于 2013-4-23 10:30
我们仔细测试了下:
1.每次刷新后,只有几十k的内存增长量,而这个是JS对象创建和销毁时带来的一些开销,几 ...
经过几天测试,性能上比其它控件好很多,用于日常的报表展示没有任何问题,要是能用在实时监控领域那就太帅了。目前还没找到能实时刷新的控件。
能否把grid的内容部分开放一个接口,允许用户自已生成"table"代码来填充?
欢迎光临 jQuery MiniUI (http://miniui.com/discuss/)
Powered by Discuz! X2