私はajaxアプリケーションを構築しています。データページング機能をどのように構築するかを選択する必要があります。基本的に、ユーザは1,000〜2,000レコードで作業する予定ですが、DBから同時に20レコードだけロードされ、クライアントに送信され、ローカルセッションストレージにキャッシュされます。これらのレコードは、オブジェクトのプロパティ(基本的には顧客レコード)を含むjson文字列です。ajaxアプリケーションのページングデザインパターン
ここで2つの選択肢があります。私たちが1,500レコードで作業しており、各ページが20レコード長であると仮定します。 ジレンマは、レコードの1,500 IDを格納する場所です。
オプション1:1500のレコードの IDがをサーバセッションにINTのリストとして格納され、直列化され、各要求に対してデシリアライズされています。クライアントは各ページのレコードIDを認識せず、ページ番号のみを要求します。サーバー上で、ユーザーがページXを要求すると、intのリストを調べて、ページXのレコードのIDを判別し、それらのレコードをロードし、クライアントにこれらのIDを持つJSON文字列を送信します。ここでの欠点は、サーバーセッションで1,500のintのリストを保持していることです。これは、ページをリクエストしているときにサーバーをintに送信するだけなのです。
オプション2:1500のレコードの IDがクライアントに送信された場合で、その後そのリストは、ローカルストレージセッションに格納されたユーザがログイン。ユーザーがページXを要求すると、javascript関数はどのレコードIDがページXにあるかを判断し、サーバーに20の整数のjsonシリアル化リストを送信します。サーバーは、これらのIDを持つレコードを返します。これは、サーバー側のセッションが大幅に軽量化され、パフォーマンスが向上する(要求ごとにそのリストを読み書きする必要はなく)、おそらくスケーラビリティが向上するはずです。欠点は、ページをリクエストするたびにサーバに20個のintのリストを送ることです。
私はオプション2に傾いています:これを行うにはこれが最善の方法ですか?
注1)私はユーザーにHTML5ローカルストレージをサポートする必要があり、2)サーバー側の実装は空白とWCFになります。
なぜクライアント(またはそのサーバー)は、これらのIDをまったく格納する必要がありますか?現在のページ番号を保存して次のページを取得できませんか?あなたが必要以上に多くの仕事をしているように見えますが、多分私は何かを見逃しています。 – CodingGorilla
データにSQLを使用していますか?またはそれらはどこか他の場所に保管されていますか? SQLを使用する場合は、データをキャッシュする必要がありますか?そうでなければ、SQLのダイレクトページングコマンドを使用して、ページ番号とページサイズ以外のものを残さないようにすることができます。 – Aristos
1500個のIDをデータベースに格納しますか?クライアントはページ番号を要求しますか?ブームが終わった。 – dotjoe