1

2,000 万行近くのリストボックス (テーブル) を表示したいと考えています。メモリ使用量を減らし、その間にサーバーが停止(応答を停止)しないようにするにはどうすればよいですか。

理論的なアイデアがあっても、共有してください(実装を試みます)。非常に緊急に解決策が必要です。

一度にすべての行をロードできないことはわかっています。スクロールするたびにサーバーに新しい行を要求する必要があります。試してみましたが、スクロールが十分にスムーズではありません。

よろしくお願いします、アマン

4

4 に答える 4

3

最初の 100 エントリを取得してから、クライアントが一番下までスクロールしたら、別の 100 エントリを追加するなどしてください。

于 2012-04-03T10:16:36.537 に答える
1

たぶん、ZKの新機能を待つことができます。リファレンス http://books.zkoss.org/wiki/Small_Talks/2012/March/Handling_a_Trillion_Data_Using_ZK

于 2012-04-05T04:03:10.680 に答える
0

テーブル値のページングを作成し、オンデマンドで特定の数のレコードを取得します。

dataTableプラグを使用して、データレコードのページ付けを行うことができます。

このライブラリを使用して、同期および非同期の方法でデータを取得できることに注意してください

于 2012-04-05T05:29:42.660 に答える
0

http://books.zkoss.org/wiki/ZK Developer's Reference / MVC / View / Renderer /ListboxRendererを使用できます。

public void render(Listitem listitem, Object data, int index)

まず、renderメソッドのインデックスによって、手元のデータソースからレンダリングする要素を取得できるように、renderを実装できます。標準キャッシュ(Hibernateが配置されている場合)またはカスタム作成されたキャッシュ(EhCacheも参照)を使用できます。

@Erikソリューションは、実装が非常に高速です。追加するには、ボタンを作成して、レコードをさらにロードすると時間がかかることをユーザーが認識し、実際にさらにロードする必要があるかどうかを考えることができます。スクロールすると、リストボックスが一時的にハングアップする可能性があります。

また、一度に表示するレコードの最大数には常に上限を設定してください。サーバーのメモリを汚染しないでください。

于 2012-04-04T08:20:03.130 に答える