2

すべてのクライアント レコードを一覧表示するページがアプリにあり、合計で約 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

4

1 に答える 1

-1

ajax を使用してデータを直接 にロードすることもできますDataTable。これにより、HTML レンダリング ステップが削除されます。

http://datatables.net/release-datatables/examples/ajax/objects.html (これはあなたが話しているデータテーブルだと思います...)

于 2013-04-12T16:55:13.890 に答える