0

我只是在我的应用程序中包含了一些登录信息。出于测试目的,我用一些测试值填充了数据库(基本上是同一行一遍又一遍,大约 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行,每次点击下一页,它都能渲染出来。当然,所有数据仍然需要可供搜索。

有任何想法吗?

4

1 回答 1

1

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

于 2019-01-13T14:59:23.413 回答