2012-03-23 7 views
1

私は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になります。

+0

なぜクライアント(またはそのサーバー)は、これらのIDをまったく格納する必要がありますか?現在のページ番号を保存して次のページを取得できませんか?あなたが必要以上に多くの仕事をしているように見えますが、多分私は何かを見逃しています。 – CodingGorilla

+0

データにSQLを使用していますか?またはそれらはどこか他の場所に保管されていますか? SQLを使用する場合は、データをキャッシュする必要がありますか?そうでなければ、SQLのダイレクトページングコマンドを使用して、ページ番号とページサイズ以外のものを残さないようにすることができます。 – Aristos

+0

1500個のIDをデータベースに格納しますか?クライアントはページ番号を要求しますか?ブームが終わった。 – dotjoe

答えて

0

おそらく私は誤解していますが、私はあなたのアプローチを本当に理解していません。あなたがページの長さを知っていて、あなたが望むページ番号を知っているならば、あなたはajax呼び出しの中でサーバにパラメータとしてこれらを送信して、次にこれをdbのSQL文でこれに限定することはできません。私が言っていることは、最初にこれらのIDを知っている点です。たとえば、jquery datatablesプラグインがここでページネーションを実行する方法を見てみましょう:http://www.datatables.net/examples/server_side/server_side.html。ご覧のように、ページ番号とページの場所をサーバーに送信する方法を使用します。次に、これに基づいて返される行を制限するのはかなり簡単です(少なくともOracle、MySQL、およびMS SQLでは)。その点が完全にわからない限り、私に知らせてください。

+0

IDを知っていれば、「ID x、y、zのレコードを取得してください」と言うことができます。 IDを知らないとレコードを要求する前に、レコードを要求する前に「すべてのIDのリストを取得してXページにあるレコードを調べる」と言う必要があります。 IDを知っていると1つのクエリが保存されるため、そのクエリをキャッシュしています。今私はそれを保存するのが最善の場所、つまりサーバー側のセッションまたはローカルストレージを理解する必要があります。 – frenchie

+0

誰もが上記のように感じるようだ...ページあたり20のレコード...単純なソリューション、簡単なソリューション。 – user1288802

関連する問題