TL,DR;

全文可以归纳为以下问题:

  • 在网页中进行大量动态异步HTTP调用时,如何保持良好的性能?
  • 是GraphQL还是WebWorker的好方法?

  • 全文

    我有一个SPA CMS项目,其中的动态数据来自许多不同的来源。结果,要显示包含大量数据的表,页面需要生成大量的HTTP调用。

    我尝试过的是使所有HTTP调用异步,一旦HTTP调用之一返回,表中的相应单元格就会相应地更新。而且我敢肯定,由于错误或粗心大意,没有HTTP调用以同步方式进行。

    但是,仍然存在性能问题。当大量的HTTP调用在较短的时间范围内解决时,页面呈现就成为问题。一旦用户尝试执行互动,例如在两个用户输入事件之间进行鼠标滚动等操作时,有很多已解决的HTTP调用事件。尽管每个重新渲染的回调都不会花费很多时间,但是如果将所有小的时间片相加,它们仍然会导致性能问题。

    我目前正在考虑两种可能的解决方案:
  • 在网关服务中实现GraphQL,以减少查询总数,或
  • 实现WebWorker以批处理已解析的HTTP调用,从而减少了主线程中呈现回调的数量。

  • GraphQL解决方案需要大量的返工,这是我要避免的工作。但是我对WebWorker经验不足,会按预期工作吗?还有其他解决方案吗?

    顺便说一句,对于渲染表,我正在使用Element UI表组件。浏览器兼容性对我来说不是问题。

    最佳答案

    尽量减少离散HTTP调用的数量是个好主意,因此从中长期来看,#1或类似名称是您应该考虑的事情。

    关于Re#2,但是,您可能不需要使用网络 worker 。处理补全可能不是瓶颈,它很可能是所有小的DOM操作导致大量重排等。因此,如果对它们进行批处理并立即应用一批,则应该能够显着减少这些更改的影响,而不必使用Web Worker来进行。

    10-02 05:34