关于 SAP Spartacus CmsService.getComponentData 可能的优化思路

问题和观察

关于由 Spartacus 驱动的页面或组件请求的一个疑问。

请求负载中的 componentIds 是由 CmsService.getComponentData 调用定义的,堆叠起来,然后通过一些优化立即发送到后端。

如果二次开发人员连续多次调用 CmsService.getComponentData(在同一个 JS 宏任务中),那么 Spartacus 会将这些调用分组,并且仅向 OCC 发出一个带有所有组件 ID 的 HTTP 请求。

浏览器 JavaScript 执行流程以及在 Node.js 中都是基于事件循环的。

了解事件循环的工作原理对于优化非常重要,有时对于正确的架构也是如此。

事件循环的概念非常简单。 有一个无限循环,JavaScript 引擎等待任务,执行它们然后休眠,等待更多任务。

引擎的一般算法:

  1. 等待有任务到达,然后执行它们,从队列里最旧的任务开始。
  2. 睡眠直到任务再次到达。

这是我们在浏览网页时看到的形式。 JavaScript 引擎大部分时间什么都不做,它只在脚本/处理程序/事件激活时运行。

任务示例:

  1. 当外部脚本

你可能感兴趣的:(关于 SAP Spartacus CmsService.getComponentData 可能的优化思路)