zl程序教程

您现在的位置是:首页 >  其他

当前栏目

关于 SAP Spartacus SSR 模式和 CSR 模式下重复发送 HTTP 请求调用 OCC API 的问题

SAP模式HTTPAPI 关于 调用 请求 重复
2023-09-14 09:03:59 时间

我使用基于版本 3.4.5 的 Schematics 创建了一个店面,并在 SSR 模式下运行它。
我在浏览器中访问 http://localhost:4000/

通过 Chrome 开发工具我知道主页的源代码是由 SSR 服务器成功生成的。

但是,即使在 SSR 模式下,我发现 /cms/pages OCC API 仍然是从客户端触发的。



添加下面的配置:

ConfigModule.withConfig({
  state: {
    ssrTransfer: {
      keys: {
        products: true,
        cms: true
      }
    }
  }
});

当我访问 SSR 服务器返回的主页时,我在 Chrome 开发工具中观察到以下 OCC API 调用:

没有找到产品数据的 API。

所以我的理解是:
客户端产品数据的API被认为是“不必要的状态调用后端”,被SSR传输状态避免,对吗?

解答

默认情况下,Spartacus 在每次路由更改时重新加载 CMS 页面数据,无论它是否已经处于 ngrx 状态。 但是,客户可以通过 Spartacus 配置 routing.loadStrategy: RouteLoadStrategy.ONCE 对其进行不同的配置。

它在 CmsPageGuard.shouldReload 方法中使用。

有选择性的启用/禁用某些 CMS Component 的 SSR 端渲染

在某些情况下,您可能不想使用 SSR 在服务器上呈现所有 CMS 组件。 以下是您不应在服务器上呈现 CMS 组件的一些示例:

  • CMS 组件需要个性化输入,不应该或不能在没有此输入的情况下呈现
  • SSR 输出不需要 CMS 组件,出于性能原因,它已从渲染过程中删除
  • CMS 组件与外部服务交互(延迟),与索引和社交共享无关。

尽管可以在组件中添加条件逻辑以在 SSR 中呈现(部分)视图,但 Spartacus 为组件提供了一种配置以使其更通用,并避免组件中的任何特定逻辑。 下面是一个例子:

provideConfig({
  cmsComponents: {
    SearchBoxComponent: {
      disableSSR: true
    }
  }
});

2022年12月23日更新

当回退发生时,Dynatrace 不再捕获任何与 SSR 周期相关的信息——它假定请求已完成,因为应用程序已经发送了 CSR 响应。