如何更快地从 json 文件加载到我的数据表中?

How can I load from a json file faster into my datatables?

提问人:peace_love 提问时间:2/11/2020 更新时间:2/11/2020 访问量:832

问:

这是我的json文件 (含 5000 项):

{
    "data": [{
            "name": "file1.html",
            "date": "2019-01-29T20:33:57.00163Z",
            "size": "348"
        },
        {
            "name": "file2.xml",
            "date": "2019-01-29T20:33:57.000167Z",
            "size": "401"
        },
        {
            "name": "file3.html",
            "date": "2019-01-29T20:33:57.000171Z",
            "size": "1314"
        }
    ]

}

我是这样加载的:

var table = $('.table').DataTable({
  "pageLength": 10,
  "data":{{ output.data|raw }},

但它真的很慢,需要 10 秒才能将数据表加载到我的页面上。

所以我尝试了服务器端方法:

var table = $('.table').DataTable({
    "pageLength": 10,
    "processing": true,
    "serverSide": true,
    "ajax": "{{ absolute_url(asset('files/data.json')) }}",

但现在加载速度更慢了...... 分页不再起作用。

有没有机会加快性能?

php json datatables 服务器端

评论

0赞 Sreeraj_ms 2/11/2020
您是否正在使用服务器端分页?
0赞 peace_love 2/11/2020
@Sreeraj_ms 我不确定
0赞 peace_love 2/11/2020
@Sreeraj_ms我试过了,但慢慢地"paging": true,
0赞 dhamo 2/11/2020
在服务器端和客户端中,您执行相同的过程。您只需加载 json 文件。不使用任何分页概念 .try 使用分页概念加载数据
0赞 peace_love 2/11/2020
@dhamo我正在研究它,但我找不到分页概念的示例,所以我不确定该怎么做

答:

1赞 Prabhash Rawat 2/11/2020 #1

当您处理客户端大型数据集(我定义为超过 1000 个)时,您可能希望切换到数据表数据的服务器端实现。

table = $('#example').DataTable( {
serverSide: true,
deferLoading: 57
ajax: {
  url:"files/data.json",
  },
 });

Datatables 服务器端文档

用于减少分页时 ajax 调用的管道数据

评论

0赞 Prabhash Rawat 2/11/2020
我刚刚编辑了答案,您可以按照管道概念来减少对分页的 ajax 调用。
0赞 peace_love 2/11/2020
谢谢!我测试了你的代码。数据表加载速度快,但没有内容。No matching records found
1赞 peace_love 2/11/2020
我刚刚测试了你的 pipline 建议,它有效!! 数据表加载速度快。"processing": true, "serverSide": true, "ajax": $.fn.dataTable.pipeline( { url: '{{ absolute_url(asset('files/test.json')) }}', pages: 5 // number of pages to cache }),
0赞 peace_love 2/11/2020
唯一的问题是,搜索不再起作用,并且无法正确显示总条目(filtered from NaN total entries)
0赞 Prabhash Rawat 2/11/2020
让我检查一下并回复您。