2016-06-30 11 views
0

私はテーブルデータを表示するためにdatatablesプラグインを使用しています。 テーブルが正確に12kレコードを取得するまで、すべてが動作していました。今はそのスーパースローと私は通常、スクリプトを停止する必要があります。 私はこのフォームから、私が得たい特定のデータに応じてテーブルの表示内容を変更することができます。これはテーブルにレコードを追加する前にうまくいきました。フォームを使用してdatatablesプラグインをスピードアップするにはどうすればよいですか?

最初に、ユーザーがフォームを送信したときにテーブルからすべてのレコードを表示すると、テーブルからレコードの戻り値が変更されます。

処理を高速化するにはどうすればよいですか?コメントのいくつかすでに述べてきたよう

<script type="text/javascript" class="init"> 
$(document).ready(function() { 
    $('#example').DataTable({ 
     "order": [[ 3, "desc" ]], 
     "aLengthMenu": [[10,25, 50, 75,100, -1], [10,25, 50, 75,100, "All"]], 
    "pageLength": 1000 

    }); 
}); 

</script> 

<form name="fraud_view" action="" method="post"> 
     <td> <input type="submit" name="submit" value="submit" ></td> 
</form> 

<cfif structKeyExists(FORM, "submit")> 


<cfquery datasource="test" name="Get_data"> 
    SELECT * FROM tablename 
    where 1 = 1 ect... 
<cfelse> 
    <cfquery datasource="test" name="Get_data"> 
select * 
from tablename 
order by date desc 
</cfquery> 

</cfif> 
<!--- here im displaying the table date ---> 
<table id="example" class="display " cellspacing="1" width="100%"> 
     <tbody> 
      <cfoutput query="Get_data"> 
       </td> 
       <td>#account_num#</td> 
       <td>#first_name#</td> 
       <td>more collums</td> 
      </tr> 
      </cfoutput> 
     </tbody> 
    </table> 
+0

(時々、あなたが実際にすべての時間に大きなデータセットをすべて表示する必要がいけない)データに独自のフィルタを実装することができ、あなたのフィルタリングスクリプトがあまりにも実行されていると言っています遅いか、一般的なデータテーブルの読み込みが遅すぎますか? –

+2

あなたのブラウザは、あまりにも多くのデータを圧倒しています。レビューと編集のために12,000行のデータを提示すると、その人にも同様の影響があります。 –

+2

データベース側の処理は、ページテーブルとともにデータテーブルに使用できます。 – Beginner

答えて

4

、あなたは(この例では、PHPスクリプトを使用していますが、あなたが望む任意のサーバー側のバックエンドを使用することができます)server-side processingオプションをチェックアウトすることができます。基本的なアイデアは、jQueryとJavaScriptコードでページ区切り、並べ替え、検索などの処理をクライアント側で行うのではなく、サーバー上で処理を高速化してから結果を返すことができるということです。

たとえば、結果をフィルタリングして(方法は関係ありません)、最初の10%を取得したいとします。サーバー側を使用しない場合は、プラグインによってすべての処理とフィルタリングが行われなければならず、すべての12k行を処理する必要があります。代わりにサーバー側の処理を使用する場合は、サーバーに上位10%を要求し、にはという値が表示されます。つまり、プラグインは12,000ではなく1200行しか処理できません。

サーバーサイドの言語に慣れていない方は難しいかもしれませんが、作成者が開発した.NETまたはPHPライブラリ(それぞれhereおよびhereにあります)を使用する方法もあります。しかし、これにはエディタ拡張機能のライセンスが必要ですが、これは無料ではありませんが、DataTableには多くの優れた機能が追加されています。

独自のサーバー側コードを開発する場合は、実行する必要がある内容と必要な方法の概要については、thisのマニュアルページを参照してください。もう少し複雑になるかもしれませんが、DataTableの速度が大幅に向上します。

1

サーバ側のデータテーブルは、(他にも述べたように)最適なオプションですが、リクエストごとにデータを再ロードするなどの明らかな欠点があります。フィルタリング、並べ替え、編集など、設定がはるかに複雑です。

サーバー側ができない場合は、一度に表示するデータ量を減らすことをお勧めします。

私は、ローディングが遅くても、データ・テーブルを30k行でajaxデータ・ソース(これはhtmlのようにすべてのデータをロードする必要があります)で作業しているため、1行あたり多くのデータを表示していると仮定しています。

カッティングカラムは1つの可能性がありますが、データの一部しか必要としない場合(例:長いテキスト記述)、ajaxベース(またはhtml5データアトリビュートベース)の子ローを実装することはカラムをカットして行単位で必要とされる場合にはより大きなデータ。https://datatables.net/examples/api/row_details.html。それはページにレンダリングされる前に

また、あなたは

関連する問題