【发布时间】:2013-11-16 12:40:43
【问题描述】:
我有一个视图,它有一个将行插入表的 for 循环。这张桌子很大,已经有几千行了。
当我运行它时,服务器抛出内存不足异常。
我想添加一个无限滚动功能,这样我就不必一次加载所有数据。
现在数据正在使用常规res.render(index.ejs, data) 发送(data 是 JSON)
我可以计算出无限滚动部分,但是如何从服务器获取 JSON 数据块呢?
我使用带有 express 和 ejs 的 node.js 作为模板引擎。 我愿意使用任何可以帮助我完成整个过程的框架(特别是检查 Angualr.js)。
谢谢
【问题讨论】:
-
数据究竟存储在哪里? sql数据库?蒙哥?如果是 mongo - 检查stackoverflow.com/questions/5049992/mongodb-paging
-
@Murukesh 数据取自 Mongodb,但我不使用分页,而是加载到内存中。当我尝试使用数据渲染视图时出现问题,然后它会耗尽内存。我猜
render是一个内存昂贵的操作,因此它会崩溃。有没有办法将数据以 JSON 格式分块传输到浏览器?不想过多改动实现,添加mongodb分页 -
恕我直言,如果您不在服务器上使用分页,那么在客户端上使用无限滚动是没有意义的。你必须先解决这个问题。
-
@KosProv 我想在服务器上使用分页,我只是想知道是否有办法在 http 级别进行分页而不是从 mongodb 进行分页
-
我认为这样会浪费资源(数据中心网络/CPU/内存/IO)。另外,这不会很好地扩展。如果您的数据集增长到数百万行怎么办?它不适合您的 Web 层的内存。而且 - 底线 - 您的用户只会看到所有这些工作的一小部分。
标签: json node.js angularjs express infinite-scroll