`
tcw290
  • 浏览: 22705 次
  • 性别: 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版。 
忙了半天,只好自己续步调试追踪。经过努力终于找到了导致慢的真正凶手。真正造成慢的代码如下: 

 

function _58b(trs1,trs2){
for(var i=0;i<trs2.length;i++){
var tr1=$(trs1[i]);
var tr2=$(trs2[i]);
tr1.css("height","");
tr2.css("height","");
var _591=Math.max(tr1.height(),tr2.height());
tr1.css("height",_591);
tr2.css("height",_591);
}
};

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


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

如下: 

for (var i = 0; i < trs2.length; i++) {

/*
var tr1 = $(trs1[i]);
var tr2 = $(trs2[i]);
tr1.css("height", "");
tr2.css("height", "");
var _43f = Math.max(tr1.height(), tr2.height());
tr1.css("height", _43f);
tr2.css("height", _43f);

*/
}

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

var obj = { 'total': 100, 'rows': [{ id: '1', name: '一' }, { id: '2', name: '二'}] };
for (var i = 0; i < 10000; i++) {
var row = ({ 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版,1.5版本

http://love398146779.iteye.com/blog/2067515

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

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

    本文主要探讨如何针对EasyUI datagrid进行性能优化,以解决大数据量加载慢的问题。 首先,我们需要理解问题的根源。当datagrid加载大量数据时,如果未进行优化,其内部的某些功能,如行高自动调整,可能导致性能...

    JQuery Easy-UI DataGrid性能调优

    - 该方法中使用了`:has`伪选择器来查找已勾选的行,但在大数据量情况下,这种选择器的查找效率较低。 **优化方案一:改进选择器** - **实现方法**:考虑到Checkbox列的DOM结构是固定的,可以通过更高效的选择器来...

    jQuery Easyui datagrid/treegrid 清空数据

    在使用easyui的treegrid或datagrid的过程经常会有这样的场景,如:需要按不同的类型加载数据时,如果选择的分类下没有数据应该把上次展示的数据清空,以免引用歧义。下面给出两种方法供初学者参考:  方法一: var...

    jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容

    在jQuery EasyUI中,`datagrid`是一个非常常用的组件,用于展示和管理表格数据。本教程主要讲解如何在`datagrid`加载或查询数据时,如果没有任何匹配的记录,如何自定义显示提示信息,而不是呈现空的表格。这有助于...

    EasyUI 数据表格datagrid列自适应内容宽度的实现

    项目初期在加载数据表格的时候为了提高表格数据渲染速度,设置了默认宽度。 现需求需要加一个表格自适应的功能,触发改功能,改变列宽度,但是不重新渲染表格,不发生数据请求。 设计思路,遍历每项的所有数据,...

    使用html标签、jQuery-EasyUI和Ext4分别展示json数据的效果

    在网页开发中,数据的展示是至关重要的,特别是在大数据时代,如何有效地呈现JSON(JavaScript Object Notation)数据,使得用户可以清晰地理解信息,成为了一项基础技能。本篇文章将探讨如何利用HTML标签、jQuery-...

    Flexigrid-插件

    - 与EasyUI的datagrid相比,Flexigrid在样式定制上可能略显不足,但其代码结构更清晰,对于简单的表格需求更易于上手。 5. **实例应用** Flexigrid常被用于后台管理系统、数据分析平台等需要展示大量结构化数据的...

Global site tag (gtag.js) - Google Analytics