1

何百万ものレコードをロードするプロジェクトがあります。asp.net mvc 3 または 4 を使用します。サーバーから大量のデータが取得されるため、ページの読み込みが非常に遅くなると確信しています。初期のクエリを実行し、サイトで使用される一時テーブルに保存する SQL Server エージェント ジョブを作成しています。もっと良い方法がたくさんあると確信しています。助けてください。クライアント側データベース用の IndexedDB または WebSQL について聞いたことがあります。ヘルプ/提案をいただければ幸いです。

私の最初の投稿/質問はスタックオーバーです!

前もって感謝します!

4

4 に答える 4

1

私は同様の問題を扱ってきました.500Kのデータがクライアント側に保存されていますIndexedDB. 複数の Web ワーカーを使用してクライアント側にデータを保存し (Chrome でのみサポート)、データで使用される ID とアクションのみをサーバー側に投稿します。

速度を向上させるために、最適なデータ転送速度は、呼び出しごとに 1K から 2.5K の項目 (約 1MB のデータ) をすべて取得して保存する 4 から 8 の Web ワーカーを使用して達成されることがわかりました。

考慮すべき事項は次のとおりです。

  • 同期プロセス中に許可されるアクションを制限する
  • サーバー側とクライアント側のデータの更新 - サーバー側で常にデータを更新し、同期手順を呼び出して、変更されたデータをクライアント側に同期するというアプローチを使用します
  • メモリに何を保存しますか - Google Chrome の制限は 1.6GB ですので、メモリ リークに注意してください。現在、同期中に 300MB しか使用していません - 通常の作業中は 100-150MB が平均です
于 2013-06-19T15:49:36.783 に答える
0

ページごとにデータを分割する必要があります。データベースから特定の範囲を取得します。一度に数百万行が本当に必要ですか。まずフィルターが必要だと思います。

于 2013-06-19T07:17:46.007 に答える
0

ページングは​​間違いなく行く方法です。ただし、サイトをレスポンシブにしたいので、Ajaxを使用してバックグラウンドで実行し、データを継続的にロードしながら、ユーザーが初期データセットでサイトと対話できるようにする必要があります.

于 2013-06-19T08:03:04.693 に答える