根据我的经验,我的第一个建议是尽可能避免加载数千条记录。要在浏览器中重现Notes客户端的感觉非常困难,并且在大多数情况下,除非在极少数情况下,否则确实没有必要。让用户通过搜索来确定他们所需的信息的目标,或者让用户在后端进行分类视图,并为用户提供从下拉菜单或类似选项中选择类别的选项。
但是,如果您绝对需要加载大量数据,则可以选择几种不同的方向...。
-
DataTables加载时间的很大一部分是表行和列的实际呈现,这取决于您对rowCallback所用的逻辑类型,等等。考虑使用滚动条插件,该插件只会呈现可见的行。滚动表时,将呈现其他行。这大大加快了大表的渲染时间。
-
如果您正在加载大量数据(例如1000行),则可以对数据请求进行分块,以便用户快速获得初始数据加载(例如300-500行),而其余数据在后台异步加载。像平常一样,通过ajax参数加载初始数据,然后在initComplete回调中获取其余数据。
-
另一种选择是首先通过ajax加载数据并将其存储在localStorage或会话存储中,然后将DataTables的“ data”参数指向本地数据。这不一定能提高性能,但可以回答有关“禁用” ajax参数的问题。
例如:
var ajaxOptions = {
type: 'GET',"url": *your rest url*,contentType: 'application/json',dataType: 'json',cache: false
}
$.ajax(ajaxOptions)
.fail(function() {
console.log("AJAX FAIL")
})
.then(function(resp){
localStorage.setItem('dtdata',JSON.stringify(resp));
})
.done(function() {
// initialize DataTable
$("#myTable").DataTable( {
"data": JSON.parse(localStorage.getItem('dtdata')),"columns": o.columns
// other DataTable parameters
})
});
- #3和1或2的任意组合。
,
您是否尝试过数据表中的服务器端选项?
我前一段时间没有插件就玩了(我手动添加了js文件,并编写了一个ssjs库来处理ajax请求)。
此选项允许您处理分页服务器端,并将发送给客户端的数据限制为当前页面的数据。它将一些参数添加到ajax调用中,您可以在返回数据的代码(代理)中对其进行处理。
缺点是处理排序,过滤等操作也必须在服务器端完成(除非您关闭这些选项)
更多信息可以在这里找到:
https://datatables.net/manual/server-side
我不确定如何将其与rest控件一起使用,但通过对(脚本)代理的ajax调用,它可以正常工作。
本文链接:https://www.f2er.com/3166030.html