我正在使用codeigniter的网站上工作,我有这个表格,它将填充数据库中的信息。 当我填充表格时需要花费很长时间,因为我的数据库上有15000行,并且浏览器在加载一两分钟时会停滞不前。
这是我的代码的一部分
查看:
<div class="portlet-body">
<table class="table table-striped table-bordered table-hover table-full-width" id="sample_1">
<thead>
<tr>
<th>ID</th>
<th class="hidden-xs">Serial Number</th>
<th class="hidden-xs">Codigo</th>
<th class="hidden-xs">Estado</th>
<th class="hidden-xs">Data de inserção</th>
<th class="hidden-xs">Provider</th>
</tr>
</thead>
<tbody>
<?php foreach ($query->result_array() as $row): {
?>
<tr>
<td><?php echo $row['product_id'] ?></td>
<td><?php echo $row['serial_number'] ?></td>
<td class="hidden-xs"><?php echo $row['product_code'] ?></td>
<td class="hidden-xs"><?php echo $row['product_status'] ?></td>
<td class="hidden-xs"><?php echo $row['product_insertion_date'] ?></td>
<td class="hidden-xs"><?php echo $row['product_provider'] ?></td>
</tr>
<?php } endforeach; ?>
</tbody>
</table>
</div>
控制器:
public function loadProdutos(){
$this->load->model('produtos_model');
$tmp = $this->produtos_model->getProdutos();
$data['query'] = $tmp;
$this->load->view('produtos',$data);
}
型号:
function getProdutos() {
$query = $this->db->get('products');
return $query;
}
我的问题是,如果在这种情况下有最佳做法,或其他一些方法吗?
答案 0 :(得分:2)
第一个选项
您可能想尝试在其中添加分页,因此结果会分成不同的页面并且不会一次性加载。
Codeigniter在其库中提供pagination :
第二个选项
当你到达页面底部时,你也可以尝试将ajax加载到那里,尽管这可能有点难度。
您可以找到教程here,或在Google上搜索以找到适合您的教程。
第三个选项
加载更多按钮,类似于上面的按钮,但没有“如果你到达页面底部”
如果您在实施这些方面需要任何帮助,请告诉我,我会尽可能地提供帮助。 如果这三个选项都不是你想要的,那么我也没有想法。
答案 1 :(得分:0)
您最简单,最快捷的解决方案可能就是使用pagination。这将减少服务器负载以及浏览器上的负载,因为它只需要一次显示几行而不是全部15,000行。
答案 2 :(得分:0)
您应该使用分页来限制结果,而不是获得所有结果,因此每页返回20个结果。看看CodeIgnitor如何为其他视图处理这个问题,因为它应该合理地构建它。
作为起点,您可以参考此文档 - http://ellislab.com/codeigniter%20/user-guide/libraries/pagination.html
答案 3 :(得分:0)
您需要的是分页,您可以使用DataSource ajax轻松实现这一点:http://datatables.net/examples/data_sources/ajax.html
你还能做的就是gzip内容。当你输出15.000行时,你可能有一个大小为几兆字节的请求。当你gzip这个时,它会变得非常小..
但是,最好的更新是分页。
答案 4 :(得分:0)
你可以使用分页选项。如果db有更多行,那么加载数据是更好的选择。因为它只加载每页。