1

我想显示一个包含近 2000 万行的列表框(表格)。我该如何做到这一点,内存使用率较低,并且这样做时不会让我的服务器死机(停止响应)。

即使您有任何理论想法也请分享(我会尝试实施)。非常迫切需要解决方案。

我知道我不能一次加载所有行。每次滚动时,我都需要从服务器询问新行。我试过了,但我的滚动不够流畅。

谢谢和问候, 阿曼

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

您可以使用http://books.zkoss.org/wiki/ZK Developer's Reference/MVC/View/Renderer/Listbox Renderer

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

首先,您可以以某种方式实现渲染,以便通过渲染方法的索引从手头的数据源获取要渲染的元素。您可以使用标准缓存(如果 Hibernate 到位)或自定义编写的缓存(另请查看EhCache)。

@Erik 解决方案的实施速度非常快。要添加,您可以制作一个按钮,以便用户知道加载更多记录会花费一些时间,并且会考虑是否真的需要加载更多。滚动可以让你的 Listbox 只是挂断片刻。

并且始终对一次显示的最大记录数设置上限 - 不要污染服务器的内存。

于 2012-04-04T08:20:03.130 回答
0

对表值进行分页并按需检索特定数量的记录。

使用可以使用数据表插件对数据记录进行分页。

请注意,您可以使用此库以同步和异步方式检索数据

于 2012-04-05T05:29:42.660 回答