0

ユーザーがオプションの1つをクリックできるようにする.net Webフォームの一連のフィールドのインテリセンスを作成しようとしています。これにより、一連のフィールド(名前、アドレスなど)に入力できます。これは、c#.net と ajax を使用して実装するのは非常に簡単でした。ただし、最近、データベースに対して検索されているキー フィールドの一部を暗号化する必要があったため、機能が壊れています。これらの検索可能なフィールドを解読する唯一の方法は、現在 C#.net にあります。

この機能を修正するために、私は次のいずれかを考えていました: a) ページがロードされたら、すべてのレコードを取得してメモリ内の配列に保存し (暗号化されていない)、検索フィールドのユーザー キーとして linq または lambda を使用してレコードを取得する(s) 興味があります。b) ページが読み込まれたら、すべてのレコードを js 配列 (暗号化されていない) に保存し、クライアント側で検索を実行します。

Web サーバーとクライアントのブラウジング エクスペリエンスの両方のパフォーマンスを考慮すると、どちらが最善の方法でしょうか?

これは 10 万件未満のレコードになると思います。

4

3 に答える 3

1

各行の大きさはどれくらいですか?〜100k行は大量のデータになる可能性があります。

クライアント上

クライアントの100kは、数列のデータであっても、大量のデータです。それは単なるデータであり、それを検索するという問題があります。これはデスクトップブラウザの問題です。それはモバイルブラウザを殺します。

サーバー上

これはもっともらしいです。

考慮事項:

  • すべての結果をメモリにロードすると、どのくらいのメモリが消費されますか?
  • すべてのレコードをメモリにロードするためのレイテンシ(ネットワーク、データベース)はどれくらいですか?たぶんそれはユーザーへの影響を減らすために非同期で行うことができます。
  • C#での検索は、特に辞書を使用する場合に高速になる可能性があり、データベースほど高速ではありません。復号化が必要なデータのみをメモリに保存し、残りをデータベースに残すことを検討しましたか。必要に応じてDBから残りのデータを取得しますか?

Ajaxは引き続き可能です(データがサーバーに保存されていると仮定します)。検索リクエストを適切なストア(メモリ、データベース、または両方の混合物)にルーティングする必要があります。

于 2012-07-30T15:27:14.937 に答える
1

うわー、これは暗号化された動的データです。

ページの読み込みごとに大量のレコードをクライアントに送信すると、処理が遅くなります。

数秒ごとにデータをロードする動的キャッシュを使用する場合があります。

于 2012-07-30T14:58:27.667 に答える
1

レコードをサーバーキャッシュに保存して、ajax リクエストを作成してみませんか。これを行うと、すべてのユーザーがレコード セットを利用できるようになります。

于 2012-07-30T14:09:59.317 に答える