如题,
我要实现的是这样的,有一棵树(用ext实现的异步树),里面显示很多设备信息,当设备在线的时候就显示在线的样式,当设备不在线的时候就显示不在线的样式。当同时有多台设备同时下线时,前台检测到了就马上更改这些不在线设备的样式。
如果我更新20个左右节点的样式(就是更改node的cls属性),速度还行。如果设备达到100个左右的话,IE就会一直报脚本运行太慢,是否停止运行脚本。
实际项目会有2W多的设备,这个完全经不住考验啊。各位大侠有没有啥好方法可以提高性能,或是其它方法支招的啊,先拜谢了。
我要实现的是这样的,有一棵树(用ext实现的异步树),里面显示很多设备信息,当设备在线的时候就显示在线的样式,当设备不在线的时候就显示不在线的样式。当同时有多台设备同时下线时,前台检测到了就马上更改这些不在线设备的样式。
如果我更新20个左右节点的样式(就是更改node的cls属性),速度还行。如果设备达到100个左右的话,IE就会一直报脚本运行太慢,是否停止运行脚本。
实际项目会有2W多的设备,这个完全经不住考验啊。各位大侠有没有啥好方法可以提高性能,或是其它方法支招的啊,先拜谢了。
就算轮询,速度也不该和设备个数相关啊,难道你对每个设备都单独发请求检测状态?
我用ext3没遇到过这种提示
ext4确实太累赘了
我是这样的:
根节点:
---组织一
---设备一
---设备二
---设备三
---组织二
---设备一
---设备二
---设备三
---组织三
---设备一
---设备二
---设备三
---root设备一
---root设备二刚开始组织都没有点开,如果我点开组织一,load它下面的设备的时候就,向后台请求不在线的数据,然后显示设备的节点(不在线的样式变灰)。同时通过Ext.TaskMgr来定时向后台获取不在线设备(获取的是根节点下所有的不在线的设备),改变的是当前所有展开了的设备的状态。不在线的变灰,原来不在线,现在在线的变亮。
我测试的时候,就点开组织下有很多设备的那个,该组织下所有的设备都不在线,然后IE就报脚本运行慢。我实在想不明白为什么。我刚接手extjs3三四个月,很多东西还是很不明白。
task_CheckState = {
run: checkOffLineDevice,//执行任务时执行的函数
interval: 30*60*1000 //任务间隔,毫秒为单位,这里是30min
}
Ext.TaskMgr.start(task_CheckState);//初始化时就启动任务设备图标变灰的代码这样的//list是保存获取的不在线设备的相关信息,后台传过来的
list.each(function(record){
//找到对应的node
var nNode = treePanels['all_channels'].tree.getById(record.indexCode);
if (nNode.data != null ) {
//lastStatus是用来保存设备上一次是否在线的,初始时都在线,1---在线 0---不在线
if(nNode.attr('lastStatus') == '1' || nNode.attr('lastStatus')==null){
nNode.attr('cls', 'node_Offline');
}
nNode.refresh();
nNode.attr('lastStatus', '0');
}
}
更新加载树时,你不如更新整棵树,说白了,就是更新树的store,我用ext4,之前也测试过大几千个节点的情况,加载速度还行啊,没发觉卡死什么现象。