`
zzc1684
  • 浏览: 1190179 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

easyui datagrid 大数据加载效率慢,优化解决方法

阅读更多

在使用easyui datagrid途中发现加载数据的效率真的不是一般的差。经测试IE8加载300条数据就感觉明显的慢了,加载2000条数据就另人崩溃用时差不多60 秒,就算在google浏览器测试结果也快不了几秒。 平时听闻easyui datagrid效率底下,自己测试才发现真是使人无法忍受。

笔者只好百度,google解决方法,发现一篇文章说改

//1.3.3版本是这样的,其它版本也是这句代码
$(_1e0).html(_1e4.join(""));
改为:

$(_1e0)[0].innerHTML = _1e4.join(""); 笔者找了类似的地方修改,测试后结果还是一样。没有任何效果,可能是跟作者的版本不同,我的是1.3版,作者是的1.33版。
忙了半天,只好自己续步调试追踪。经过努力终于找到了导致慢的真正凶手。真正造成慢的代码如下:

Java代码  收藏代码
  1. for (var i = 0; i < trs2.length; i++) {  
  2. var tr1 = $(trs1[i]);  
  3. var tr2 = $(trs2[i]);  
  4. tr1.css("height""");  
  5. tr2.css("height""");  
  6. var _43f = Math.max(tr1.height(), tr2.height());  
  7. tr1.css("height", _43f);  
  8. tr2.css("height", _43f);  
  9. }  



看代码就清楚,上面是对比表格中两行的高度,然后把高的赋值给各行。

解决:凶手找到了,怎样解决呢?笔者是直接屏蔽她们的对比和赋值。让浏览器自动适应高度吧。

如下:

Java代码  收藏代码
  1. for (var i = 0; i < trs2.length; i++) {  
  2.   
  3. /* 
  4. var tr1 = $(trs1[i]); 
  5. var tr2 = $(trs2[i]); 
  6. tr1.css("height", ""); 
  7. tr2.css("height", ""); 
  8. var _43f = Math.max(tr1.height(), tr2.height()); 
  9. tr1.css("height", _43f); 
  10. tr2.css("height", _43f); 
  11.  
  12. */  
  13. }  



好了,屏蔽后。让我们测试效率。测试一万条记录,测试代码片段如下:

Java代码  收藏代码
  1. var obj = { 'total'100'rows': [{ id: '1', name: '一' }, { id: '2', name: '二'}] };  
  2. for (var i = 0; i < 10000; i++) {  
  3. var row = ({ id: 'id' + i, name: '一' });  
  4. obj.rows.push(row);  
  5. }  
  6. $('#tt').datagrid({  
  7. url: null,  
  8. pagination: true,  
  9. pageSize: 20,  
  10. pageNumber: 1,  
  11. rownumbers: true,  
  12. fitColumns: false,  
  13. columns: [[  
  14. { field: 'id', title: 'id', width: 100 },  
  15. { field: 'name', title: 'Name', width: 100 }  
  16. ]]  
  17.   
  18.   
  19. });  
  20. $('#tt').datagrid('loadData', obj);  



好了,现在是10000条记录啊,IE8只用1秒不到加载完成。改成3000条记录,只要1~2秒加载完成。

结论:把那该死设置高度代码直接屏蔽。嘻嘻,有惊喜。EASYUI版本:1.3版

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics