我的应用中有一个页面列出了我们所有的客户记录 - 总共大约一千个。查询是直接的(实际上是两个查询),看起来像这样(一个用于商业,一个用于住宅):
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
答案 0 :(得分:0)
您可以尝试使用ajax将数据直接加载到DataTable
它会删除HTML呈现步骤。
http://datatables.net/release-datatables/examples/ajax/objects.html(我假设这是您正在讨论的数据表...)