我想显示一个包含近2000万行的列表框(表)。 我怎么能这样做,内存使用率较低,而不是让我的服务器死掉(停止响应)。
即使你有任何理论上的想法,请分享(我会尝试实施)。 迫切需要解决方案。
我知道我无法一次加载所有行。每次滚动时我都需要从服务器询问新行。我试过了,但我的卷轴不够流畅。
谢谢&问候, 阿曼
答案 0 :(得分:3)
为什么不只检索前100个条目,然后一旦客户端滚动到底部,你会追加另外100个条目,依此类推。
答案 1 :(得分:1)
也许你可以等待ZK的新功能。 参考 http://books.zkoss.org/wiki/Small_Talks/2012/March/Handling_a_Trillion_Data_Using_ZK
答案 2 :(得分:0)
您可以使用http://books.zkoss.org/wiki/ZK Developer's Reference/MVC/View/Renderer/Listbox Renderer。
public void render(Listitem listitem, Object data, int index)
首先,您可以实现渲染方式,以便从render方法中通过索引从手头的数据源获取元素。您可以使用标准缓存(如果Hibernate已就绪)或自定义编写缓存(如果不是EhCache)。
@Erik解决方案实施起来非常快。要添加你可以创建一个按钮,这样用户就会意识到加载更多记录需要花费一些时间,并且会想到是否真的需要加载更多。滚动可以使Listbox暂停一会儿。
并且始终对您将同时显示的最大记录数量设置上限 - 不要污染服务器的内存。
答案 3 :(得分:0)