質問
データベースにいくつかのテーブルがあり、約7K行あります。 カスタム形式、詳細などのピボットテーブルを使用してWebサイト(asp.net)でレポートを作成します。
これに最適なソリューションは何ですか。たとえば、この量のデータを使用してリピーターをレンダリングすると、非常に遅いためです。
アドバイスありがとうございます
解決
ページングが望ましくない場合、スクロール時に行を取得するためにAJAXが必要になる可能性があります。また、メモリを節約する必要がある場合は、スクロールして行が表示されなくなる可能性があります。
他のヒント
ビューステートをオフにする
必要でない限り
Page.EnableViewState = false;
テーブルを分割
ページングルートを下回らない場合は、大きな<table>
をいくつかの小さな</table>
に分割してみることもできます。 (以前は、ブラウザが最後のcrap * 7000 = alot of crap
を確認した後にのみテーブルをレンダリングできました。これがまだ正しいかどうかはわかりませんが、一見の価値があります)
がらくたを取り除く
cssを使用しており、次のものを使用していないことを確認します
<td width="40" valign="top"> 50 </td>
<td class="a"> 50 </td> <!-- better -->
<td>50</td> <!-- best -->
<!-- if you need to specify a width, you only need to do it in one row -->
<=>
を覚えておいてくださいすべてのコストでページサイズを縮小
問題はページのレンダリングではないこともありますが、ダウンロードが問題の原因であるため、確認してください。
ネストされたテーブルは本当にあなたを傷つけます
ナフは言った
ページングの使用をお勧めします。
次のような典型的な行を検討してください:
<tr><td>ID</td><td>Some data</td><td>More and more data</td></tr>
各行には66文字あるため、7k行を使用すると、合計で500k相当のデータになります。そして、それはWebディスプレイにとっては大したことです。
すべてを1ページに表示したい場合は、最小限にしてください:
- スペースを無駄にしないでください
- 完全に避けられない場合を除き、属性を使用しないでください
- class = <!> quot; <!> quot;を使用しないでください。異なる行に異なるクラスがない場合(代わりにすべての行に同じクラスを適用します)
とにかく、ターゲットコンピューター+ブラウザーによっては、行が大きくなるとこれが本当に遅くなる可能性があります。
使用している言語については言及しませんが、リピーターについての言及はASP.Netを示唆していますか?私の経験では、DataGridへのデータのバインドは、より大きなデータセットの方が高速です。
しかし、なぜそんなに多くのデータをWebページに表示したいのかと疑問に思う必要があります。正しい考えのユーザーは誰も座って、その量のデータをスクロールし、有用だとは思わないでしょう。データをユーザーに役立つ適切なデータに制限します-通常は100行未満にフィルターされます。
IMO、これほど多くのデータを含むレポートは、形式に関係なく役に立たないが、印刷されたレポートなどのためにすべてを必要とする場合は、代わりにサーバー上でPDFドキュメントを生成することを検討する。
その量のデータに対してカスタムレポートツールを試してみることができます。私の会社では、 RSinteract (恥知らずのプラグ)というツールを作成しています。 SQL Serverレポートサービスを使用します。
データをダンプするだけの場合。ブラウザがレンダリングしている間、またはクエリの実行中にブラウザがロックしていると思います。対象ブラウザが何であるかがわかっている場合は、<!> quot; More ... <!> quot;を使用できます。次のデータセットを取得し、1000行の制限があるリンク。ただし、これはCtrl + F検索に影響します。ページングに似ていますが、責任をユーザーの手に委ねています。
本当に<!> quot; best <!> quot;を探している場合<!> quot; web app <!> quot;のソリューションでは、Flash / Flexを使用してその数の行を効率的にレンダリングすることを露骨に提案します。基本的なHTML以外のものを使用することが選択肢にない場合、ユーザーが@mbeckishが示唆するようにスクロールするときに新しい行を動的にフェッチすることをお勧めします...
レポートを処理するために1つのクライアントにDev Expressグリッドを使用し、彼らはそれを気に入っています(私はむしろ自分でロールバックしたかったのですが!)
を参照してください。