我使用基于版本 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 方法中使用。