【问题标题】:Return large json response from a node express api从节点 express api 返回大型 json 响应
【发布时间】:2019-05-01 10:45:52
【问题描述】:

我在 node/express api 中有一个控制器,它返回数据以构建报告。根据报告,请求的数据可能非常大 (20Mb)。

获取此类数据并保持良好用户体验的最佳方式是什么?

不想使用分页,我必须做 N 个请求,直到我得到所有数据。想到块传输编码,我想到了web sockets,但我不确定这是不是最好的方法。

谢谢。

【问题讨论】:

  • 除了思考之外,您还尝试过什么?
  • Don't want to use paging,但这将是最好的用户体验..
  • 目前,它是一次获取所有数据,这需要一些时间。到目前为止,我有分页,但我将分页视为用户交互,用户会在需要时获得新的数据块。在这种情况下,用户需要所有这些数据来构建报告。
  • 也许你应该在另一个进程中使用 AJAX 来获取块中的数据。这样用户就可以继续与浏览器交互,直到所有数据都下载完毕,然后就可以显示报表了?还要确保压缩数据,因为 JSON 是简单的文本格式。
  • 分页不一定需要用户交互。但当然,您的客户端逻辑必须实现获取剩余结果。

标签: javascript node.js api express


【解决方案1】:

在这种情况下,用户需要所有这些数据来构建报告。

不,用户需要报告。如果您将该报告的创建移至后端,您只需将最终报告发送给可能更轻量级的客户端。它还可能允许服务器端缓存。

【讨论】:

    【解决方案2】:

    我想说没有真正的分页替代方案,尽管您可以在客户端设置一个简单的脚本,当滚动到页面底部时会加载更多数据/页面。

    window.onscroll = function() {
        if ((window.innerHeight + window.pageYOffset) >= document.body.offsetHeight) {
            // your api ajax calls 
        }
    };
    

    【讨论】:

    • 这里的分页数据有什么不同? :D
    • 分页,但它是在用户向下滚动页面时动态加载的
    猜你喜欢
    • 2020-02-06
    • 2018-11-17
    • 2019-03-16
    • 2017-09-13
    • 1970-01-01
    • 2022-06-29
    • 2018-11-27
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多