如何确认 SAP Spartacus SSR Transfer State 已经正常工作了

简介: 如何确认 SAP Spartacus SSR Transfer State 已经正常工作了

在检查一些客户项目时,我注意到一旦返回 SSR 响应,浏览器仍然会执行页面和组件的 XHR 请求。


我使用的代码为:


provideConfig(<StateConfig>{
      state: {
        ssrTransfer: {
          keys: { [CMS_FEATURE]: StateTransferType.TRANSFER_STATE },
        },
      },
    }),



在返回的 index.html 中,您可以检查 script 标签,默认情况下它的 id 应该是 spartacus-app-state : <script id="spartacus-app-state" type="application/json">.


如果数据已经存在于 index.html 里,Spartacus 不应该执行 http 重新获取它。


CMS HTTP 请求总是被执行,以防后台发生变化。 如果您不经常更改 CMS,则可以考虑将 routing.loadStrategy 配置设置为 ONCE.


使用如下代码:


provideConfig(<RoutingConfig>{
      loadStrategy: RouteLoadStrategy.ONCE,
    }),


Chrome 开发者工具 console 面板,出现如下错误消息:


@ngrx/store: The feature name “siteContext” does not exist in the state, therefore createFeatureSelector cannot access it. Be sure it is imported in a loaded module using StoreModule.forRoot(‘siteContext’, …) or StoreModule.forFeature(‘siteContext’, …). If the default state is intended to be undefined, as is the case with router state, this development-only warning message can be ignored.


正确代码如下:


provideConfig(<RoutingConfig>{
      routing: { loadStrategy: RouteLoadStrategy.ONCE },
    }),



在 Spartacus 2.0 版之前,实现状态持久化的唯一方法是使用一种简单的声明性机制,称为 storageSync,它允许您提供属性键以在存储中持久化。之后,我们可以使用 Angular 提供的 Transfer State 机制来同步 SSR 和 CSR 之间的数据。配置的传输状态应该对数据的某些部分有效,但并非对所有数据都有效。 参见 cms-store.module.ts、product-store.module.ts 和 site-context-store.module.ts 的源代码。


image.png


Spartacus 在服务器上运行 XHR 请求,然后在应用程序引导时在客户端再次运行。 为了防止对已经在服务器上填充的状态进行不必要的后端调用,Spartacus 将 NgRx 状态的一部分包含在服务器端呈现的 HTML 中。


开发人员可以为 CMS 和产品(来自 NgRx 商店)配置状态转移,如以下示例所示:


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



开发人员还可以将配置缩小到特定的状态子部分,如以下示例所示:


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


相关文章
|
5月前
|
前端开发 JavaScript 开发者
Spartacus 2211 客户成功启用 SSR
Spartacus 2211 客户成功启用 SSR
|
5月前
|
缓存 前端开发 JavaScript
Spartacus SSR 使用场景里,CDN 应该 cache 哪些类型的页面
Spartacus SSR 使用场景里,CDN 应该 cache 哪些类型的页面
|
5月前
|
JavaScript 中间件 API
Spartacus 2211 启用 SSR
Spartacus 2211 启用 SSR
|
5月前
|
前端开发 API UED
Spartacus SSR 期间使用 browser function 会导致 error,回退到 CSR
Spartacus SSR 期间使用 browser function 会导致 error,回退到 CSR
|
5月前
|
测试技术 API
使用 jMeter 给 Spartacus SSR 发送 100 个并发的 SSR 请求,全部被 SSR 响应了
使用 jMeter 给 Spartacus SSR 发送 100 个并发的 SSR 请求,全部被 SSR 响应了
|
5月前
|
存储 前端开发 搜索推荐
Spartacus SSR fallback 成 CSR 时,仍然会在后端继续保持渲染
Spartacus SSR fallback 成 CSR 时,仍然会在后端继续保持渲染
|
5月前
|
JSON 开发者 数据格式
关于 SAP Spartacus LandingPage2Template 区域的 layout 设计实现
关于 SAP Spartacus LandingPage2Template 区域的 layout 设计实现
|
5月前
|
搜索推荐 开发者 UED
关于 SAP Spartacus 层的 UI 设计
关于 SAP Spartacus 层的 UI 设计
|
5月前
|
开发者 UED
SAP Spartacus BREAKPOINT 枚举类型在 Spartacus layout 实现中的作用
SAP Spartacus BREAKPOINT 枚举类型在 Spartacus layout 实现中的作用
|
11月前
|
存储 缓存
Spartacus 服务器端渲染(SSR)的 timeout 设置
Spartacus 服务器端渲染(SSR)的 timeout 设置
下一篇
无影云桌面