当我的演示者被显示时,我必须执行 RPC 调用。该调用将生成包含大量数据的 String[]。但是这个电话非常非常慢。大约需要1分钟才能完成。
经过一些测试,我发现ListBox.addItem()占据了这个调用的30%以上。这是在该小部件上添加字符串的重要时间。
我该怎么做才能最大限度地减少这段时间?
假设我需要在我的演示者显示时加载所有内容。
我已经做过的事情:
- 将我的查询放在视图中(影响不大)
- 服务器读取 Txt 文件而不是调用 DB(最差的是 View)。
- 使用集合类数组列表,矢量...(矢量时间缩短 5%)
我注意到GWT设计了一个LightweightCollections来改善客户端Collections的使用(这是我的下一步)。
但是我能对列表框做什么呢?
太多的选择是没有选择的。
您将无法调整GWT Listbox/ValueListBox以显示如此大量的数据(我猜测1000中的条目考虑20秒,即1分钟的30%)。GWT 列表框旨在供选择。您不能期望用户看到 1000 个值,滚动然后选择。这是用户交互的噩梦。
-
正确的方法是使用异步加载SuggestBox来处理如此巨大的数据。使用 SuggestBox,您可以根据用户输入键筛选和显示较少的数据作为选择。
-
如果使用SuggestBox不可行,您必须尝试在单元格小部件中使用CellList(它们可能会显示更好的性能) - https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCellWidgets
-
我不确定,但给 GWTChosen 一个尝试 - http://jdramaix.github.com/gwtchosen/