【问题标题】:rendering large server-side datasets in jquery datatables在 jquery 数据表中呈现大型服务器端数据集
【发布时间】:2014-07-15 19:37:38
【问题描述】:

我使用DataTables 1.9.4 和几个插件(ColVis、ColReorderWithResize 和 ColumnFiltering)。我用于服务器端通信的参数是:

  • “bServerSide”
  • “fnServerData”
  • “sAjaxSource”

现在,假设我必须显示 3000 行,大约 25 列,没有分页(“iDisplayLength”:-1)。包含数据权重的 json 大约 1MB,服务器将其发送到数据表大约需要一秒钟。

问题是这 3000 行的渲染需要几秒钟(大约 5-10 行,这是不可接受的)。在 IE 上,它可能需要更多时间,从而导致“脚本不响应”错误。

我希望我能以某种方式加快这个过程 - 即通过显示让我们说 100 行并在后台渲染其余的行。有没有更好的办法?我知道有一个 Scroller 插件 - Scroller,但我需要所有可用于搜索的数据,所以滚动不是一个选项。

【问题讨论】:

  • 即使您使用分页,数据表搜索也会扫描整个数据集。
  • 想想下面的思路:用纯jquery创建表,显示50条结果。然后添加一个“显示更多结果”按钮。每次用户单击此按钮时,您都会从数据库中加载更多 50 行并附加到已经存在的表中。
  • 我需要为浏览器搜索 (Ctrl+F) 绘制所有行,这就是我想在后台渲染表格的原因。应该不会花费太多时间,我可以显示某种消息,说明表格正在呈现。
  • 有一个搜索输入和一个按钮不是更好吗?这更有意义,不是吗?

标签: jquery ajax datatables server-side jquery-datatables


【解决方案1】:

不幸的是,数据表不适用于大型数据集。解决方法是使用服务器端处理。这意味着您需要根据页面索引来实现要返回的数据。

以下是示例:
http://datatables.net/forums/discussion/2651/alternative-server-side-php-script http://www.datatables.net/examples/server_side/server_side.html

【讨论】:

  • 我已经为数据表的服务器端处理实现了后端逻辑,比您提供的要复杂得多。我也不能使用分页(在一个特定的表格中),因为我需要在开始时绘制所有记录。
  • 请详细说明您说不能使用分页时的意思。此外,如果您要将所有记录(假设 1000 秒)发送到数据表,数据表将需要一些时间来呈现数据。解决这个问题的唯一方法是通过服务器端处理分页一次发送一小部分数据。
猜你喜欢
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
  • 2020-02-28
  • 1970-01-01
  • 2021-02-27
  • 2019-01-26
  • 2014-04-01
  • 1970-01-01
相关资源
最近更新 更多