EXT性能问题
用了两个多月EXT,最近遭遇性能瓶颈,不得不放弃了,或许是我们用的有问题,所以请各位多多指教。
用最简单的话说就是,我们要用grid一次显示1000条数据,不准用分页,不准修改EXT源代码,可以使用滚动条,显示时间不能超过2秒。
加载大规模数据不用分页虽然听起来很愚蠢,但是那是用户的要求,因为他们认为Delphi可以做到,Web也可以做到。
我们采用EXT+Struts+Spring+Hibernate,EXT解析Struts返回的XML串。
我们的测试结果如下:(四台机器同时访问,机器配置均为P4 3.0,512Mb,有一台是1G,不过时间没有多大差别,每个测试重复三遍,取平均值)
加载数据量 共耗时(秒) 直接调用Action返回XML耗时(秒)
20 2 <1
200 10 2
700 20 8
1400 40 17
我在自己的笔记本上测试(Core2 2.0G,2G)
800 16
假设总耗时=EXT解析XML时间+EXT绘制DOM元素显示数据时间+调用Action并返回XML时间
在《Javascript权威指南》中指出IE6.0解析DOM会随数据量增大呈几何级增长。我觉得这个或许是性能瓶颈,而且我们无法克服。
而且在加载大数据量时,IE会瞬时出现假死,而且一碰就会出现“无响应”,我想这对于要求实时性很高,数据量很大,稳定性很高的ERP系统而言,EXT并不能胜任。
不知道各位有没有好的建议和解决方案。
评论
对于EXT,我不明白,为什么你们一定要用它的Grid,我说句实话,那个Grid做得太烂!
看来各位也都是一群.net控件蜜罐里长大的吧,已习惯于使用别人的控件了。
整个EXT,能吸引我的地方就是他的WINDOW、DESKTOP、SKIN、THEMES。
别的,自己做。
真是肤浅呢。。。。还有你有时间写这个,咋不吧时间放在程序实现上呢。
5列,几千行数据,2-3秒显示是可以做到的
先load前100条数据,显示出来,
然后:再取100条,update ds(ds.add(records[])),循环加完所有数据。
取完全部数据后执行一个检测函数:把当前grid中最大的id值传到后台检测是否有人加了新数据,true,取回,update ds
可以试试,我没测试过,看ext的docs觉得理论上可以实现
不过排序恐怕就没办法了
例子在我这里出错.
其实我觉得,从ext grid的设计来看,他并不适合做 liveGrid 除非做较大改动.
liveGrid 做的比较不错的 是 rico 和 dorado
但是也各有缺点. 不过做的已经很不错了
而ext-grid要想达到或者超过上面两位, 底层需要大改动啊
我不知道siteartwork上的这个对ext的改动到了什么地步
如果只是简单的改一改 很有可能是 有了livegrid功能,但是ext的其他的功能都丢失了
liveGrid 的演示页面:
http://www.siteartwork.de/livegrid_demo/
它采用了重载的 Ext.ux.data.BufferedJsonReader,Ext.ux.grid.BufferedStore,Ext.ux.grid.BufferedGridView,Ext.ux.BufferedGridToolbar,Ext.ux.grid.BufferedRowSelectionModel 等组件,基本上已经脱离了原来的 Ext.grid, 所以效果有了很大的提升
给我的体验很不错。
也谢谢这个主题的讨论让我找到了 liveGrid 这么个优秀的 Ext User Extension.
例子在我这里出错.
其实我觉得,从ext grid的设计来看,他并不适合做 liveGrid 除非做较大改动.
liveGrid 做的比较不错的 是 rico 和 dorado
但是也各有缺点. 不过做的已经很不错了
而ext-grid要想达到或者超过上面两位, 底层需要大改动啊
我不知道siteartwork上的这个对ext的改动到了什么地步
如果只是简单的改一改 很有可能是 有了livegrid功能,但是ext的其他的功能都丢失了
先说烂在哪里?
例如排序,没有提供多个排序,以及排序队列管理。
no contextmenu
不能Autofit
no zebra
当grid置于自动换行模式,title文字没有“…”
我觉得你对ext的评价有点"想当然", 你完全是站在使用者角度,而非技术人员的角度.
从使用者角度来看,当然是越完美越好,而ext-grid离完美当然还有很大距离.
但是 如果你稍微有点技术背景(也许你有,只是你没有站在技术的角度去看ext)
那么你就不会说ext"太烂"了.你具的那几个例子可能确实是ext的不足
但是这些不足 还不足以让你用"太烂"来形容, 除非你能做出比它更好的来,或者找到一个更好的利用ajax技术实现的列表组件.
其实我也在不停的去寻找ext-grid的漏洞,并且想办法做出一个更好的来.但是,我始终的认为,ext-grid已经是我见过的最好的ajax列表组件了.
关于 title文字没有“…”的问题: 在IE下是有的,原因是IE和FF对text-over的解释方式不同.
如果在FF下也要叫上..., 那速度将会慢的无法接受(因为要用js挨个单元格去判断内容长度,然后再截取字符串,再拼接上...)
[quote="fangzhouxing"]LiveGrid发表: [url]http://www.siteartwork.de/2007/11/10/livegrid-component-with-extjs/[/url] 不用分页直接显示后端大容量数据表。[/quote]
我看那个例子怎么没有数据加载啊
在我看来这个不是ext性能问题,而是浏览器性能问题。你可以试试用最快的 document.write 方法写1。5w个span标签,需要多少时间。
Ext 已经包含了一个非常好用的 Ext.PagingToolbar, 你可以直接用这个作分页。
<?xml version="1.0"?> <?xml-stylesheet type='text/xsl' href='DataGridShow.xsl'?>
建议用appllet实现,用js+applet实现页面交互,应该可以解决性能问题,至于applet在IE下的两个主要缺点:插件过大、安全控制下的禁止加载,前者在局域网内不成问题,后者使用Sun提供的带applet的jsp的代码修饰工具可以实现客户端浏览提示的效果,客户端会出现确认安装Java插件的安全提示,这个问题也就不成问题了。
在众多的AJAX框架中,考察一个框架是否优秀,除了强调框架的功能、性能外,掌握难度和相关的文档、范例也是参考要数。开源框架Ext便是这样一个不错的选择。Ext针对一个典型的RIA标准,离不开在浏览器上运行的相应解决方案,以下是我个人对EXT的效率分析:
· 良好的用户体验, 响应速度快 运行时快速高效
Ext参考合理的设计模式(例如,Elements使用Composite/Flyweight享元模式、许多组件如Grid的设计灵感来自Swing),对于大量使用浏览器控件的应用场合,JavaScript引擎亦不会胸襟见爪。
· 基于互联网的开放标准进行数据传输
Ext以W3C的XHTML+CSS作为MakeUp语言,可解析Array,JSON和XML的数据源
· 丰富的组件,基于事件驱动,能进行快速开发
Ext的设计初衷就是,尽可能完善UI组件库而不需要其他库的帮忙;所有的UI组件都属于基于观察者(Observer)模式的事件驱动型设计。Ext对页面的要求本身就是Unobtrusive的,有利于做到HTML脚本之间的分离
· 良好的兼容性,能在多种平台下运行
兼容四大浏览器;服务端方面,Ext是一种与服务器无关的语言,使得其它特定语言的库亦可用于Ext处理Ajax服务。只要能返回EXT能处理的数据,任何一种类型的服务端是无要求的
2.0的待补充...
好像有个{success:true}要怎么写呢??
例如排序,没有提供多个排序,以及排序队列管理。
no contextmenu
不能Autofit
no zebra
当grid置于自动换行模式,title文字没有“…”
排序问题,我觉得web应用的排序通常情况下在服务端完成,因为返回客户端的一般是某一页数据,当前页内的排序意义通常不大,除非数据量小,能一次性全部下载到客户端。Ext Grid 有 sortchange 事件,你可以侦听这个事件重新请求服务端进行排序操作。
此外,Ext Grid 同样提供了 contextmenu rowcontextmenu 之类的事件接口帮助你实现 contextmenu。
关于 autofit, zebra ,你有好设计思路吗,可否分享?
任何一个产品都存在不足之处或者不同的取向选择,在我看来,上面这些问题即使存在也都不能构成“太烂”的罪名,呵呵
先说烂在哪里?
例如排序,没有提供多个排序,以及排序队列管理。
no contextmenu
不能Autofit
no zebra
当grid置于自动换行模式,title文字没有“…”
layout中要调整每列的宽度等等.
不仅仅创建dom需要很大开销,设置style同样慢
同样lock,移动列都是同样的道理,不仅仅是初始化.
看来各位也都是一群.net控件蜜罐里长大的吧,已习惯于使用别人的控件了。
整个EXT,能吸引我的地方就是他的WINDOW、DESKTOP、SKIN、THEMES。
别的,自己做。
太肤浅了 看来阁下对EXT的理解就是一组widgets的堆砌。。。。我抗议!
先说烂在哪里?
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 29605 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
说说业务平台这件事
jjx 写道所谓的这些技术平台,其实就是一个整合环境(比较典型的就是把建表,生成 ...
-- by sunwine -
J2EE安全问题
你多看一寫acegi的資料,就會明白很多
-- by guojingxf -
一条凭空消失的短信引发的 ...
lordhong 写道农村扫盲?? 哪个村儿的?
-- by weiqingfei -
一条凭空消失的短信引发的 ...
lordhong 写道农村扫盲??写调研报告写烦了,模仿《探索发现》的风格写的, ...
-- by sslaowan -
一条凭空消失的短信引发的 ...
农村扫盲??
-- by lordhong






评论排行榜