15

私はjQuerydatatablesプラグインを約2年間使用していますが、これまでのところうまく機能しています。一度に約45000レコードをロードする必要がある場合(ボタンをクリックしてデータのあるページがロードされるのを待つ)、問題が発生しました。ロード時間は長すぎて待つことができません。

これが私がChromeウェブブラウザを使って行ったテストです(データはそれの[ネットワーク]タブからのものです):

datatablesプラグインがオンになっています:
5476レコード:45071レコード:
24 requests ❘ 256.26KB transferred ❘ 19.80s
(onload: 19.80s, DOMContentLoaded: 18.58s)


34 requests ❘ 1.85MB transferred ❘ 11.1min
(onload: 11.1min, DOMContentLoaded: 11.0min)

datatablesプラグインがオフになっています(jQuery datatablesの初期化がコメントアウトされています):
5476レコード:
21 requests ❘ 255.84KB transferred ❘ 6.57s
(onload: 13.26s, DOMContentLoaded: 13.28s)

45071レコード:
31 requests ❘ 1.84MB transferred ❘ 2.0min
(onload: 2.0min, DOMContentLoaded: 2.0min)

データテーブルによるロード時間の増加は、45k行で80%以上、5k行でほぼ40%です。

だから私はあなたたちがたくさんの行(45000+)をより速く処理する同様のプラグインを知っているかどうか疑問に思っていましたか、それとも「一度に」すべての45000+レコードをロードしようとしてポイントを逃していますか?

任意の提案をいただければ幸いです。

4

3 に答える 3

28

DataTables FAQ(http://datatables.net/faqs#speed)から:

  • クライアント側の処理-DOMソースデータ:〜5'000行。速度オプション:bSortClasses
  • クライアント側の処理-Ajaxソースデータ:〜50'000行。速度オプション:bDeferRender
  • サーバー側の処理:数百万行。

45,000行で、現時点で遅延レンダリングを使用していない場合は、間違いなくそれをお勧めします。それができない場合、DataTablesオプションについては、サーバー側の処理を調べる必要があるかもしれません。

于 2012-07-25T09:32:48.957 に答える
4

アランの答えは良いです。ただし、次のコードに示すように、もう1つ言及する必要があるのは(ロード時間に大きく影響します)、設定bProcessingしてtrueにすることです。bServerSide

$(document).ready(function() {
    $('#example').dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "../examples_support/server_processing.php"
    } );
} );

参照。http://datatables.net/examples/data_sources/server_side.html

私のコードはロードに15秒かかっていましたが、今では1秒ほどかかります:)

于 2014-01-05T18:03:56.833 に答える
2

私の場合、ブラウザプラグインもDataTableのパフォーマンスを低下させる可能性があることがわかりました。テーブル自体のロード時間は約15秒から2秒になりました。

そのうちの1つはSkypeツールバーで、指示がない限り、テーブル内のデータを自動的に解析します。

これは巨大なテーブルの問題です。多くのユーザーがそのプラグインを持っており、それが無意識のうちに大きなテーブルのロードを遅くします。

これには1つの良い解決策があります。これをヘッダーに追加します。公開されるすべてのDataTablesWebページには、次のものが含まれている必要があります。

<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
于 2015-11-24T14:41:04.963 に答える