2,000 万行近くのリストボックス (テーブル) を表示したいと考えています。メモリ使用量を減らし、その間にサーバーが停止(応答を停止)しないようにするにはどうすればよいですか。
理論的なアイデアがあっても、共有してください(実装を試みます)。非常に緊急に解決策が必要です。
一度にすべての行をロードできないことはわかっています。スクロールするたびにサーバーに新しい行を要求する必要があります。試してみましたが、スクロールが十分にスムーズではありません。
よろしくお願いします、アマン
2,000 万行近くのリストボックス (テーブル) を表示したいと考えています。メモリ使用量を減らし、その間にサーバーが停止(応答を停止)しないようにするにはどうすればよいですか。
理論的なアイデアがあっても、共有してください(実装を試みます)。非常に緊急に解決策が必要です。
一度にすべての行をロードできないことはわかっています。スクロールするたびにサーバーに新しい行を要求する必要があります。試してみましたが、スクロールが十分にスムーズではありません。
よろしくお願いします、アマン
最初の 100 エントリを取得してから、クライアントが一番下までスクロールしたら、別の 100 エントリを追加するなどしてください。
たぶん、ZKの新機能を待つことができます。リファレンス http://books.zkoss.org/wiki/Small_Talks/2012/March/Handling_a_Trillion_Data_Using_ZK
テーブル値のページングを作成し、オンデマンドで特定の数のレコードを取得します。
dataTableプラグを使用して、データレコードのページ付けを行うことができます。
このライブラリを使用して、同期および非同期の方法でデータを取得できることに注意してください
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ソリューションは、実装が非常に高速です。追加するには、ボタンを作成して、レコードをさらにロードすると時間がかかることをユーザーが認識し、実際にさらにロードする必要があるかどうかを考えることができます。スクロールすると、リストボックスが一時的にハングアップする可能性があります。
また、一度に表示するレコードの最大数には常に上限を設定してください。サーバーのメモリを汚染しないでください。