0

ユーザーが約ループスルーする必要があるプロジェクトがあります。100,000 枚の写真を作成し、各写真に PhotoType ID を割り当てます。

プロジェクトの要件は、画面に表示される写真が 1 枚だけであるため、基本的には、1 つのアイテムを保持する 100,000 ページが存在することを意味します。

このプロジェクトを開始する最良の方法は何ですか? ViewState の使用や完全なページの再読み込みはリソースの無駄になりますか?

データをクライアント スクリプト変数としてシリアル化し、ページ メソッドを使用してそれを操作しようと考えていました。私は c# asp.net を使用しています。

アイデアやより良いアプローチがあれば教えてください。

4

2 に答える 2

0

次へボタンと前へボタンは、クールな CSS クラスを持つ単純な HTML 要素になります。イベント ハンドラー (ユーザーが次/前のボタンをクリックしたとき) は JavaScript になります。現在のインデックス (アクティブな写真 ID) は、各クリック イベントの後に更新される非表示のフィールドにある場合があります (次がクリックされると、前のクリックで idx += 1 および idx -= 1 になります)。この後、データベースから写真 (まだ JavaScript イベント内) を取得する必要があります。http ハンドラーの URL を返す WCF または ASMX Web サービスをお勧めします (ハンドラーを使用して varbinary イメージ フィールドを html に表示すると仮定します)。また、それらのクリックの前に、素敵な ajax プログレス gif アニメーションなどを表示できます。Web サービス自体は、データベースから適切な画像を返すストアド プロシージャを呼び出します (アクティブなインデックス値に基づいて、必要なレコードは 1 つだけです)。最終的に必要なのは、ストアド プロシージャ、コードの Java スクリプト行、ハンドラー、Web サービスだけです。ASP グリッドやデータ セットはなく、10 万件のレコードを反復処理する必要もありません。これはあなたのパフォーマンスにとって致命的です。これが正しい方向を示すのに役立つことを願っています。

于 2013-09-15T18:29:59.997 に答える
0

このような大量のデータについては、戦略を変更する必要があります。まず、100k のレコードを DataSet にロードすることはできません。サーバー側でページングを行う必要があります (ストアド プロシージャなどから必要な単一レコードのみを返します)。1 ページに 1 つの画像しか表示されない場合は、データセットも必要ありません。ViewState に関しては、完全に無効にします。現在のページを非表示フィールドに保存し、ハンドラーを使用して写真を表示できます。また、AJAX を使用して次/前の写真を取得します。できるだけ軽量にするようにしてください。

于 2013-09-13T15:52:54.357 に答える