jquery.dataTables 在 ie 11 中非常慢

Posted

技术标签:

【中文标题】jquery.dataTables 在 ie 11 中非常慢【英文标题】:jquery.dataTables very slow in ie 11 【发布时间】:2014-09-04 21:40:20 【问题描述】:

一位用户报告了一个奇怪的问题,升级到 ie 11 后,jquery.dataTables 的渲染速度非常慢(20 - 40 秒)。大约有 400 个结果,这似乎是合理的。它在 Chrome 和 FF 中运行得非常快。

经过一番深入研究后,发现任何对 table sorter 的调用都会导致服务器运行缓慢。

我们使用的是 1.9.4,尽管升级到 1.10 的尝试也没有显示出任何性能改进。

代码很简单:

$('#results_table').dataTable(
        "aoColumnDefs": [
             "bSortable": false, "aTargets": [ 0, 1, 12 ] ,
             'sType': 'currency', 'aTargets': [8] 
        ],
        "aaSorting": [[19, 'asc'], [18, 'asc'], [16, 'desc'], [4, 'desc'], [13, 'desc'], [5, 'desc'], [14, 'desc'], [15, 'desc'], [3, 'asc'], [6, 'desc']]
    );

欢迎任何关于改进的想法。

【问题讨论】:

它在 FF 和 Chrome 中的执行时间不到一秒。在 IE 中 40 秒。这似乎更像是一个特定的错误,而不是一般的缓慢。 【参考方案1】:

这并不完全是一个修复,但它是一个很好的解决方法。我切换到构建数据数组并将其附加到 dataTables 而不是构建 dom 元素。

例子:

$('#results_table').dataTable(
  "aaData":[[attrs], [attrs]], // an array of row data
   "aaSorting": [[19, 'asc'], [18, 'asc']],
   "aoColumns": [
        "sClass": "center" ,
       //... other class definitions
    ]
);

【讨论】:

您从中看到了多少速度提升? 我在 IE 上尝试了 4 秒,现在需要 2 秒。更快,但 firefox 和 chrome 仍然可以在一秒钟内完成。我只处理超过 2000 条记录。 我的实际从 30 秒缩短到了 1 秒。不知道有什么区别。 我添加了延迟渲染选项,这使它下降到 0.5 秒。这是一个丑陋的修复,但它确实有效,直到出现更好的修复。

以上是关于jquery.dataTables 在 ie 11 中非常慢的主要内容,如果未能解决你的问题,请参考以下文章

jquery datatables 固定列在 IE 中未对齐

JQuery DataTables 插件:TypeError:e[j] 未定义

Jquery datatables导出Excle表的问题

找不到文件'dataTables/jquery.dataTables' Rails 4

jQuery DataTables:如何按特定列排序? [关闭]

如何在DataTables 1.10中使用JQuery DataTables“input”插件