从路由中传递大量数据到使用渲染在节点中查看的最佳方法?

我有一个路由文件。 当用户转到site.com/page时,我的路由会调用SQL DB,然后parsing结果并将其作为JSON返回。 然后我用

res.render('route/to/view', {data: result, moredata: resultTwo})

将数据发送到视图。 问题是我的数据比较大,需要永远发送到视图。 我100%确定这是让我的网页缓慢运行的原因。 当我将数据集切成两半时,显示速度会更快。 我也知道这个数据的实际显示也是一个因素,但是我严格的关注从路由到视图的速度。

通过一堆小块而不是一个大块更有效率吗? 唯一的办法就是逐渐传递小块?

将数据传递到视图的速度并不是很慢 – 可能发生的情况是模板引擎只需要花费一些时间来呈现您提供的数据。 数据本身永远不会留下内存,所以没有“复制”操作。

加速这种东西的最好方法就是使用AJAX或websockets。

这是一个典型的stream程:

  • 提出一个数据库请求来抓取less量的总项目(比如说10)。
  • 将这些传递给您的视图并立即将其呈现给用户。
  • 在视图中运行一些AJAX代码,然后asynchronous发送GET请求到您的服务器,请求其余的项目。
  • 然后,您可以使用新添加的数据更新DOM。

这通常是处理大量数据显示的最佳方法,因为用户感觉到事情非常快,即使速度很慢 – 页面加载速度快,数据显示速度快等等。