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

Posted

技术标签:

【中文标题】jQuery 数据表插件太慢 - 需要更换【英文标题】:jQuery datatables plugin too slow - need a replacement 【发布时间】:2012-07-23 16:28:51 【问题描述】:

我已经使用 jQuery datatables plugin 大约两年了,到目前为止效果很好。当我需要一次加载大约 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+ 记录而错过了重点?

欢迎提出任何建议!

【问题讨论】:

我想说你没有抓住重点,45000 行是一个巨大的数据集,需要在浏览器中处理。也许您应该考虑加载较小的数据视图并进行分页 您是否有任何理由需要一次加载那么多记录?这几乎会减慢任何速度...... 我建议时间延迟可能不是拉数据,而是 dom 操作。您是否考虑过优化现有的 jquery 代码? @NicholasKing:这也是我的怀疑,这就是为什么我进行了证实这一点的测试。对于优化 - 我真的不知道我还能对 jQuery 数据表调用做哪些优化,因为我只是通过 $('#example').dataTable( "bJQueryUI": true, "iDisplayLength": 50 );` 你使用服务器Server side processing 吗?您可以将它与 pagination 一起使用,因此最终在当前任何时候您都将在客户端处理一小部分行...... 【参考方案1】:

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

客户端处理 - DOM 源数据:~5'000 行。速度选项:bSortClasses 客户端处理 - Ajax 源数据:~50'000 行。速度选项:bDeferRender 服务器端处理:数百万行。

如果您目前没有使用延迟渲染,对于您的 45'000 行,我肯定会建议您这样做。否则,对于 DataTables 选项,您可能需要查看 server-side processing。

【讨论】:

【参考方案2】:

艾伦的回答很好;但要提到的另一件事(极大地影响加载时间)是将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 秒 :)

【讨论】:

bProcessing 不只是在 DataTables 加载数据时显示消息的选项吗?它如何加快加载时间? 加速它的不是bProcessing;只是bServerSide 艾伦说的不就是这样吗?【参考方案3】:

我发现浏览器插件也会降低 DataTable 的性能,这就是我的情况。表格本身的加载时间从大约 15 秒变为 2 秒。

其中之一是 Skype 工具栏,它会自动解析表格中的数据,除非您告诉它不要这样做。

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

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

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

【讨论】:

以上是关于jQuery 数据表插件太慢 - 需要更换的主要内容,如果未能解决你的问题,请参考以下文章

08.01《jQuery》——cookie插件的简单应用和自己写的简单更换颜色插件

Docker - compose 更换安装源,加快Docker - compose官方安装源速度太慢的问题

如何使用 jQuery 数据表插件

使用zTree插件构建树形菜单

如何使用 jquery 数据表插件删除当前行

jQuery常用插件