2

プレゼンターが表示されたら、RPC 呼び出しを行う必要があります。その呼び出しの結果、大量のデータを含む String[] が生成されます。しかし、この呼び出しは非常に遅いです。終了まで約1分かかります。

いくつかのテストの後、ListBox.addItem() がこの呼び出しの 30% 以上を占めることがわかりました。そのウィジェットに文字列を追加するのは非常に重要です。

この時間を最小限に抑えるにはどうすればよいでしょうか。

プレゼンターが明らかにしたときにすべてをロードする必要があると仮定します。

私がすでに行ったこと:

  • ビュー内にクエリを配置します(あまり影響しません)
  • サーバーは、DB を呼び出す代わりに Txt ファイルを読み取ります (最悪の場合はビュー)。
  • Collections クラスの ArrayList、Vector を使用... (Vector は時間を 5% 短縮)

クライアント側でのコレクションの使用を改善するために、GWT がLightweightCollectionsを設計したことに気付きました (次のステップです)。

しかし、ListBox について何ができるのでしょうか?

4

1 に答える 1

13

選択肢が多すぎるのは仕方がない。

このような膨大な量のデータを表示する目的で GWT Listbox/ValueListBox を調整することはできません (20 秒、つまり 1 分の 30% を考慮して、1000 のエントリを推測しています)。GWT Listbox は選択用です。ユーザーが何千もの値を見て、スクロールしてから選択することを期待することはできません。ユーザーインタラクションの悪夢です。

  1. 適切なアプローチは、そのような巨大なデータに対して非同期ロードされたSuggestBoxを使用することです。SuggestBox を使用すると、ユーザーの入力キーに基づいて、より少ないデータを選択肢としてフィルタリングして表示できます。

  2. SuggestBox を使用できない場合は、セル ウィジェットでCellListを試してください (パフォーマンスが向上する可能性があります) - https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCellWidgets

  3. よくわかりませんが、GWTChosen を試してみてください - http://jdramaix.github.com/gwtchosen/

于 2012-12-10T14:27:09.190 に答える