Node.js 在同构Redux应用程序中,保持API调用较小,还是一次性发送所有信息是更好的做法?

Node.js 在同构Redux应用程序中,保持API调用较小,还是一次性发送所有信息是更好的做法?,node.js,express,reactjs,redux,sequelize.js,Node.js,Express,Reactjs,Redux,Sequelize.js,我正在使用React(ES6)/Redux/React Router Redux中的服务器端渲染构建一个体育数据可视化应用程序。在顶部,有一个基于类的App组件,还有两个不同的基于类的组件路由。(这些组件下的所有内容都是无状态功能组件),结构如下: App |__ Index (/) |__ Match (/match/:id) 当对给定路由发出请求时,将调度一个API调用,其中包含给定路由的所有信息。这是托管在另一台服务器上的,我们在那里使用Restify和Sequelize ORM。返回的

我正在使用React(ES6)/Redux/React Router Redux中的服务器端渲染构建一个体育数据可视化应用程序。在顶部,有一个基于类的
App
组件,还有两个不同的基于类的组件路由。(这些组件下的所有内容都是无状态功能组件),结构如下:

App
|__ Index (/)
|__ Match (/match/:id)
当对给定路由发出请求时,将调度一个API调用,其中包含给定路由的所有信息。这是托管在另一台服务器上的,我们在那里使用Restify和Sequelize ORM。返回的JSON对象大约有12000到30000行长,需要500到8500毫秒的时间返回

因此,我们的应用程序需要很长时间才能加载,我认为这是主要的瓶颈。我有几个选择

  • 将这个巨大的API调用分离为许多较小的API调用。尽管如此,由于JS是单线程的,我必须测量渲染的速度,以确定这是否可行
  • 当单击新选项卡时,通过调度新API调用尝试延迟加载(每个
    match
    都有几个
    game
    s,都在新选项卡中)

  • 我走对了吗?还是有更好的选择?提前谢谢,如果你需要更多的例子,请告诉我

    这取决于很多事情,包括你的目标客户是谁。移动设备是否会使用这种桌面

    根据您目前所说的,我会选择“延迟加载”。

    无论哪种方式,你通常都不希望任何应用程序强迫用户等待,尤其是不超过8秒

    您希望您的页面发送并以尽可能快的速度显示。这意味着您不需要等到所有数据都解决了之后,才能对UI进行水合处理(如果您真的是服务器端渲染,则必须这样做,因为在许多情况下,您的客户端应用程序将在数据解析和通过线路发送之前至少几秒钟构建和交付。)

    如果您的移动设备网络连接不稳定,由于超时,他们可能永远看不到此页面

    看起来分页和基于访问其他页面的延迟加载可能是一个很好的解决方案


    在这种情况下,您可能还需要研究持久化数据和缓存。这是一个相当大的任务,可能比你想要的更复杂。我认识一些同事,他们可能会使用图书馆来为他们处理大部分这些东西。

    移动设备会使用这个还是严格意义上的桌面?移动设备也会使用8秒对大多数用户来说就像是一个永恒的时间,但在移动设备上,你可能会经常超时。同意。8秒是荒谬的。我认为“延迟加载”是一种方式,这绝对是有道理的。您是否建议使用Redis之类的工具来缓存流行的查询?