django 和 dataTables - 加速查询和页面显示
Posted
技术标签:
【中文标题】django 和 dataTables - 加速查询和页面显示【英文标题】:django and dataTables - speed up query and page display 【发布时间】:2013-04-05 07:14:22 【问题描述】:我的应用中有一个页面列出了我们所有的客户记录 - 总共大约一千条。查询很简单(实际上是两个查询),看起来像这样(一个用于商业,一个用于住宅):
all_comm = System.objects.all().filter(isRessy=False)
all_ressy = System.objects.all().filter(isRessy=True)
在我的模板中,我只是遍历两个查询,在表格中显示信息。此代码如下所示:
<table style="width:100%;" class="field_container dt full-border">
<thead>
<tr>
<th align=left width=200>Owner</th>
<th align=center width=100>System ID</th>
<th align=left>System Address</th>
<th align=center width=200>Options</th>
</tr>
</thead>
<tbody>
% for System in all_ressy %
<tr onclick="window.location.href='% url cpm.systems.views.system_overview System.systemID %'">
<td> System.billingContact.lastName , System.billingContact.firstName </td>
<td align=center> System.pk </td>
<td> System.systemAddress , System.systemCity </td>
<td align=center>
<a href="% url cpm.work_orders.views.create_wo 'R' System.systemID %?=next% url cpm.systems.views.system_overview System.systemID %">Create Service Call</a>
</td>
</tr>
% endfor %
</tbody>
</table>
此代码与显示所有商业记录相同。如果你注意到我在表中列出了一个dt
类。这会将表设置为dataTable
表。因此,行得到很好的突出显示,列可以排序,并且表格顶部有一个搜索框。都是好东西。
问题是整个页面的加载速度有点慢。加载时间的一半似乎是数据的原始显示(获取数据然后迭代生成基本html
表的所有记录)。加载时间的后半部分(或至少有相当一部分时间)看起来专门用于将常规表转换为dataTable
。
我想知道是否有什么办法可以加快整个过程。我尝试在dataTable
上使用分页,但这似乎没用,因为所有记录都已加载,只是隐藏在多个dataTable
页面中。考虑到应用程序的性质,整个页面的真正分页实际上是不可能的。我觉得查询不会变得更快,因此必须进行优化或采取一些技巧来加快此页面的加载速度。
有什么想法吗?
感谢您的帮助
编辑我指的是这个dataTable插件:http://datatables.net/index
【问题讨论】:
你需要使用datatable ajax paginatio @Garfonzo 你到底用了什么方法来加快页面加载速度? 【参考方案1】:您可以尝试使用 ajax 将数据直接加载到 DataTable
中,这将删除 HTML 呈现步骤。
http://datatables.net/release-datatables/examples/ajax/objects.html(我假设这是您正在谈论的数据表......)
【讨论】:
是的,也许我应该更新我的问题以指出我正在谈论的“dataTables”......所以,使用你建议的方法,它看起来只会加载 10 个(或一些数量)每页的记录。因此,使用分页实际上会更快,因为它加载的页面更少。 如果您准备适当的服务器端方法来收集参数并创建 JSON,您可以使用iDisplayStart
和 iDisplayLength
数据表参数为一个分页页面仅填充部分数据。以上是关于django 和 dataTables - 加速查询和页面显示的主要内容,如果未能解决你的问题,请参考以下文章
Django:模型和视图以及 jQuery DataTables,hello world 示例
django-rest-framework-datatables 和 Django Parler 的翻译字段
DataTables 无法在 Django 和 HTML 中正确显示