jQuery Datatables提高加载速度

时间:2019-01-13 14:12:16

标签: javascript php jquery datatables medoo

我刚刚在我的应用程序中包含了一些登录信息。为了进行测试,我在数据库中填充了一些测试值(基本上是同一行,一遍又一遍,大约27k行..)。

现在,我想在视图上打印数据,这样做:

<table id="chatLogs">
    <thead>
        <tr>
            <th>ID</th>
            <th>Message ID</th>
            <th>User Agent</th>
            <th>IP:Port</th>
        </tr>
    </thead>
<tbody>
<?php
foreach($chatlogs as $log){ ?>

<tr>
    <td><?=$log['ID'];?></td>
    <td><?=$log['messageID'];?></td>
    <td><?=$log['userAgent'];?></td>
    <td><?=$log['IP'];?></td>
</tr>

<?php }
?>
</tbody>
</table>

$log是我使用名为Medoo的数据库接口获取的变量。

此外,我还附上jQuery DataTables以获取更好和可排序的表格。

<script>
$(document).ready( function () {
    $('#chatLogs').DataTable({
        dom: 'Bfrtip',
        buttons: [
        'copy', 'excel', 'pdf'
    ]
    });
} );
</script>

现在,在完成所有操作并完全加载页面之前,大约需要15秒(使用27k测试行)。 我只是直接在数据库上测试了相同的查询,这花费了0.02秒,因此,它完全是关于PHP的,而不是关于SQL的。

似乎回显表中的所有内容都需要一些时间,以及“将其加载到DataTables中” ...

现在的问题是:是否可以使其更快或更快速地加载,并在需要时加载数据?我的意思是仅将数据加载到JSON中,而不先回显所有内容(这是最长的部分)?因为在该表中,无论如何首先只有10行,并且每次我单击下一页时,它都可以呈现它。当然,所有数据仍然需要进行搜索。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以通过使用limit $start $stop一次仅加载一组记录来提高加载时间,以使用php和sql来提高性能,也可以使用DataTable的"iDisplayLength",属性来这样做。