jQuery数据表插件太慢-需要更换


jQuery datatables plugin too slow - need a replacement

我已经使用jQuery数据表插件大约两年了,到目前为止效果很好。现在,当我需要一次加载大约45000条记录时,出现了问题(您单击按钮并等待加载包含数据的页面)-加载时间太长,无法等待。

以下是我使用Chrome浏览器进行的测试(数据来自它的"网络"选项卡):

数据表插件已打开:
5476记录:
24 requests ❘ 256.26KB transferred ❘ 19.80s
(onload: 19.80s, DOMContentLoaded: 18.58s)

45071记录:
34 requests ❘ 1.85MB transferred ❘ 11.1min
(onload: 11.1min, DOMContentLoaded: 11.0min)

数据表插件关闭(jQuery数据表初始化完成):
5476记录:
21 requests ❘ 255.84KB transferred ❘ 6.57s
(onload: 13.26s, DOMContentLoaded: 13.28s)

45071记录:
31 requests ❘ 1.84MB transferred ❘ 2.0min
(onload: 2.0min, DOMContentLoaded: 2.0min)

对于45k行,数据表的加载时间增加幅度超过80%,对于5k行,几乎增加40%

所以我想知道你们是否知道有任何类似的插件可以更快地处理很多行(45000多条),或者我试图"一次加载"所有45000多个记录,这是不是错过了要点?

欢迎提出任何建议!

从DataTables常见问题解答(http://datatables.net/faqs#speed):

  • 客户端处理-源于DOM的数据:约5'000行。速度选项:bSortClasses
  • 客户端处理-Ajax来源的数据:约50’000行。速度选项:b参考渲染
  • 服务器端处理:数百万行

如果您现在没有使用延迟渲染,对于4500行,我当然会建议您这样做。如果做不到这一点,对于DataTables选项,您可能需要查看服务器端处理。

Allan的回答很好;但需要提及的另一件事(极大地影响加载时间)是将bProcessingbServerSide设置为true,如下代码所示:

$(document).ready(function() {
    $('#example').dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "../examples_support/server_processing.php"
    } );
} );

参考。http://datatables.net/examples/data_sources/server_side.html

我的代码加载需要15秒,现在大约需要1秒:)

我发现浏览器插件也会降低DataTable的性能,这就是我的情况。桌子本身的装载时间从大约15秒增加到了2秒。

其中之一是Skype Toolbar,它会自动解析表中的数据,除非你告诉它不要这样做。

这对大桌子来说是个问题。很多用户都有这个插件,它在不知不觉中减缓了他们对大表的加载。

有一个很好的解决方案,将其添加到标题中。每个公开的DataTables网页都应该包含以下内容:

<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />