すべてのクライアント レコードを一覧表示するページがアプリにあり、合計で約 1,000 件です。クエリは簡単で (実際には 2 つのクエリです)、次のようになります (1 つは商業用、もう 1 つは住宅用)。
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