在jquery数据表中呈现大型服务器端数据集

在jquery数据表中呈现大型服务器端数据集,jquery,ajax,datatables,server-side,jquery-datatables,Jquery,Ajax,Datatables,Server Side,Jquery Datatables,我使用的DataTables 1.9.4插件很少(ColVis、ColReorderWithResize和ColumnFiltering)。我用于服务器端通信的参数有: “服务器端” “fnServerData” “sAjaxSource” 现在,假设我必须显示3000行,大约25列,没有分页(“iDisplayLength”:-1)。json包含大约1MB的数据权重,服务器将其发送到datatables需要大约1秒的时间 问题是渲染这3000行需要几秒钟(大约5-10秒,这是不可接受的)。

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

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

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


我希望我能以某种方式加快这个过程——比如说,显示100行,然后在背景中渲染其余的行。有更好的办法吗?我知道有一个Scroller插件-,但我需要所有可用的数据进行搜索,所以滚动不是一个选项。

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

以下是示例:

即使使用分页,Datatables搜索也会扫描整个数据集。请考虑以下想法:使用纯jquery创建表,显示50个结果。然后添加“显示更多结果”按钮。每次用户单击此按钮时,您都会从数据库中再加载50多行,并附加到已存在的表中。我需要绘制所有行以进行浏览器搜索(Ctrl+F),这就是为什么我要在后台渲染表的原因。这不会花费太多时间,而且我可以显示某种消息,说明表正在渲染。使用搜索输入和按钮不是更好吗?这更有意义,不是吗?我已经为datatables的服务器端处理实现了后端逻辑,比您提供的要复杂得多。我也不能使用分页(在一个特定的表中),因为我需要在开始时绘制所有记录。请详细说明你说不能使用分页的意思。此外,如果要将所有记录(假设为1000条)发送到datatable,datatable需要一些时间来呈现数据。唯一的解决方法是通过服务器端处理分页一次发送一小部分数据。