1

実際、DB からデータセットを取得していますが、時間がかかります (>1 分)。

そのため、ajax を使用して非同期に実行し、データセットが結果を返したかどうかを確認すると同時に、待機中のページを表示します。

ただし、返された結果を待つのではなく、ユーザーが他のページに移動したい場合は、それを行うためのヒントを教えてくれる人はいますか?

4

2 に答える 2

0

まず、データベースからクエリを最適化しようとします。1分を超えて実行されているクエリは、途方もなく巨大であるか(回避するためにページ付けを実装できます)、テーブルのインデックス作成も最適化する必要があります。

それでも十分な応答時間が得られない場合は、次の2つの方法で問題を解決できます。

  1. ユーザーがこの長時間実行されるクエリを実行したい場合は、ポップアップウィンドウで実行してください。これにより、ユーザーはメインのWebアプリでナビゲーションを続行できます。

  2. ページを取得して、iframeに表示し始めます。次に、ユーザーが他のページ(子フレームにロードされている)をナビゲートしているときに、親フレームでリクエストを行うことができます。このシナリオでは親フレームがリロードされないため、ajaxリクエストは親フレームで中断されることなく完了することができます。

于 2013-02-08T07:12:05.657 に答える
0

このシナリオで使用しているスクリプトとコードが何であれ、役に立ちません! データベース モデルをより適切に最適化します。

  • クラスター化インデックスを使用してテーブルを作成します。
  • ストアドプロシージャを使用し、
  • それが遅すぎる場合は、独自の関数とビューを作成してください。
  • ユーザーは、1 ページに 10,000 を超えるレコードを表示することはありません。プロセスによっては、データとそのオプションが制限される可能性があります....しかし、正しい方法ではありません!

リクエストを送信すると、ローダーの実行中にリクエストを停止したりナビゲートしたりすることはできません。for Asynchronous data Processing Loader (待機ページ) は必要ありません。

この希望を試してみてください。

于 2013-02-08T09:55:07.313 に答える