easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
在使用easyuidatagrid途中发现加载数据的效率真的不是一般的差。经测试IE8加载300条数据就感觉明显的慢了,加载2000条数据就另人崩溃用时差不多60秒,就算在google浏览器测试结果也快不了几秒。平时听闻easyuidatagrid效率底下,自己测试才发现真是使人无法忍受。
笔者只好百度,google解决方法,发现一篇文章说改
//1.3.3版本是这样的,其它版本也是这句代码
$(_1e0).html(_1e4.join(""));
改为:
$(_1e0)[0].innerHTML=_1e4.join("");
笔者找了类似的地方修改,测试后结果还是一样。没有任何效果,可能是跟作者的版本不同,我的是1.3版,作者是的1.33版。
忙了半天,只好自己续步调试追踪。经过努力终于找到了导致慢的真正凶手。真正造成慢的代码如下:
for(vari=0;i<trs2.length;i++){
vartr1=$(trs1[i]);
vartr2=$(trs2[i]);
tr1.css("height","");
tr2.css("height","");
var_43f=Math.max(tr1.height(),tr2.height());
tr1.css("height",_43f);
tr2.css("height",_43f);
}
看代码就清楚,上面是对比表格中两行的高度,然后把高的赋值给各行。
解决:凶手找到了,怎样解决呢?笔者是直接屏蔽她们的对比和赋值。让浏览器自动适应高度吧。
如下:
for(vari=0;i<trs2.length;i++){
/*
vartr1=$(trs1[i]);
vartr2=$(trs2[i]);
tr1.css("height","");
tr2.css("height","");
var_43f=Math.max(tr1.height(),tr2.height());
tr1.css("height",_43f);
tr2.css("height",_43f);
*/
}
好了,屏蔽后。让我们测试效率。测试一万条记录,测试代码片段如下:
varobj={'total':100,'rows':[{id:'1',name:'一'},{id:'2',name:'二'}]};
for(vari=0;i<10000;i++){
varrow=({id:'id'+i,name:'一'});
obj.rows.push(row);
}
$('#tt').datagrid({
url:null,
pagination:true,
pageSize:20,
pageNumber:1,
rownumbers:true,
fitColumns:false,
columns:[[
{field:'id',title:'id',width:100},
{field:'name',title:'Name',width:100}
]]
});
$('#tt').datagrid('loadData',obj);
好了,现在是10000条记录啊,IE8只用1秒不到加载完成。改成3000条记录,只要1~2秒加载完成。
结论:把那该死设置高度代码直接屏蔽。嘻嘻,有惊喜。EASYUI版本:1.3版
以上这篇easyuidatagrid大数据加载效率慢,优化解决方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。