在数据表中呈现的性能问题

时间:2013-06-04 17:18:22

标签: jquery datatables

我正在尝试渲染大约2500行,禁用排序和“bDeferRender”:true。它需要大约40秒的铬(v27)。我正在使用Datatables 1.9和jquery 2.有什么建议吗?

我的数据表的数据表settings

var oSettings = {
    'bDestroy': true,
    "bInfo": true,
    "bProcessing": true,
    "bDeferRender": true,
    'iDisplayLength': 10,
    'sPaginationType': 'full_numbers',
    'sDom': '<"top"i> T<"clear">lfrtip',
    'sPageButtonActive': "paginate_active",
    'sPageButtonStaticDisabled': "paginate_button",
    "oLanguage": {
        "sSearch": "Futher Filter Search results:",
        "sInfo": "Got a total of _TOTAL_ results to show (_START_ to _END_)",
        "sLengthMenu": 'Show <select>' +
                '<option value="5">5</option>' +
                '<option value="10">10</option>' +
                '<option value="15">15</option>' +
                '<option value="20">20</option>' +
                '<option value="25">25</option>' +
                '</select> results'
    },
    "bSort": false
};

1 个答案:

答案 0 :(得分:11)

快速猜测:你正在使用像oTable.fnAddData(cells)这样的fnAddData,每行一次。这将导致DataTable在每次添加后重绘。添加第二个参数false,例如oTable.fnAddData(cells,false)。然后在循环之后,调用oTable.fnDraw()。这将只重绘一次而不是2500次。

看到这个小提琴:http://jsfiddle.net/V2Kdz/

点击“填充”按钮填充表格。

第12行是:

var ai = t.fnAddData(cells,false);

如果redraw参数为false,则表格会在一秒钟之内(在我2011年中期的Mac Air上)显示。如果将redraw参数设置为true(或删除它,因为默认值为true),则需要一分钟。