php呈现html表的时间太长

gopyfrb3  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(235)

我在mysql上有两个大表, users 1538行,以及 ads 对于5414行,当我尝试加载这两个行并在html表上显示它们的数据时,页面速度会减慢,仅呈现这些表就需要大约10秒钟

我的代码:

<?php $getAllUsers = "SELECT * FROM users"; ?>
<?php $getAllPosts = "SELECT * FROM posts"; ?>

<!-- USERS TAB -->
<div id="usersTab" class="tab w3-container">
    <h1>Usuários</h1>

    <table id="usersTable" class="w3-table w3-striped w3-bordered w3-hoverable" style="width: 100%">
        <thead>
            <th>ID</th>
            <th>Nome</th>
            <th>Email</th>
            <th>Senha</th>
            <th>Data de cadastro</th>
        </thead>
        <tbody>
            <?php foreach ($connect->query($getAllUsers) as $tableRow) {?>
                <tr onclick="editUserData()">
                    <td><?php echo $tableRow["ID"] ?></td>
                    <td><?php echo $tableRow["user_login"] ?></td>
                    <td><?php echo $tableRow["user_email"] ?></td>
                    <td><?php echo $tableRow["user_pass"] ?></td>
                    <td><?php echo $tableRow["user_registered"] ?></td>
                </tr>
            <?php } ?>
        </tbody>
    </table>
</div>

<!-- ADS TAB -->
<div id="adsTab" class="tab w3-container">
    <h1>Anúncios</h1>

    <table id="adsTable" class="w3-table w3-striped w3-bordered w3-hoverable" style="width: 100%">
        <thead>
            <th>ID</th>
            <th>Titulo do anúncio</th>
            <th>Data de publicação</th>
        </thead>
        <tbody>
            <?php foreach ($connect->query($getAllPosts) as $tableRow) {?>
                <tr>
                    <td><?php echo $tableRow["ID"] ?></td>
                    <td><?php echo $tableRow["post_title"] ?></td>
                    <td><?php echo $tableRow["post_date"] ?></td>
                </tr>
            <?php } ?>
        </tbody>
    </table>
</div>

我想知道是否有任何方法可以提高性能和减少表加载时间

lvmkulzt

lvmkulzt1#

由于您的表有相对较大的数据量,需要10分钟,因此我建议您使用ajax调用,而不是在服务器端呈现表。
比如用两个表做一个静态页面;

<table id="usersTable" class="w3-table w3-striped w3-bordered w3-hoverable" style="width: 100%">
    <thead>
        <th>ID</th>
        <th>Nome</th>
        <th>Email</th>
        <th>Senha</th>
        <th>Data de cadastro</th>
    </thead>
    <tbody>
       <!-- Render this section via JS ajax success function -->
    </tbody>
</table>

<!-- table 2-->
<table id="adsTable" class="w3-table w3-striped w3-bordered w3-hoverable" style="width: 100%">
    <thead>
        <th>ID</th>
        <th>Titulo do anúncio</th>
        <th>Data de publicação</th>
    </thead>
    <tbody>
        <!-- Render this section via JS ajax success function -->
    </tbody>
</table>

现在在页面加载中,使用两个不同的ajax调用以json格式获取数据。
在php端可以压缩gzip格式的数据,使数据更小;

header('Content-Encoding: gzip');
header('Content-Length: '.strlen($gzipoutput));

因此,如果你这样做,你会得到如下设施;
1两个表的数据将并行获取
2非阻塞用户界面
三。gzip编码将减少传输的数据量
现在,如果可能的话,我建议您在表中使用分页(尽管我不知道您的要求)。如果您使用分页,它将真正有助于使页面更快。仅供参考,如果您试图通过自己的代码实现分页,那么这将有点费时,而您可以使用某种网格的js库(例如。 JqGrid, JQuery data table, Handsontable 等)
除此之外,如果您真的只想使用php,还有一些高级解决方案。喜欢;
群集数据库
索引表以快速获取数据
使用php的p线程以并行方式获取数据。

eivnm1vs

eivnm1vs2#

您应该遵循这些技术从数据库中检索大量数据。当您在企业级应用程序上工作时,它将帮助您。
1分块数据
当您的数据库中有大量数据时,您应该将这些数据分块为一个小集合。这意味着每页获取100个数据并使用分页来管理页面(使用ajax更好)。
更多信息
2索引
索引在数据库设计中是一件非常重要的事情。它将优化检索过程。
更多信息
3.聚类
数据库聚类是一种先进的技术,在大型产品中常用于控制数据库系统中的数据丢失、数据库服务器故障和流量。但是学习你的知识。
更多信息

相关问题