2

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

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

4

1 回答 1

-1

您可以尝试使用 ajax 将数据直接加载到DataTable它会删除 HTML 呈现步骤。

http://datatables.net/release-datatables/examples/ajax/objects.html(我假设这是您正在谈论的数据表......)

于 2013-04-12T16:55:13.890 回答