我的应用程序中有一个页面,列出了我们所有的客户记录——总共大约一千条。查询很简单(实际上是两个查询),看起来像这样(一个用于商业,一个用于住宅):
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