首页 > 其他分享 >如何确认 SAP Spartacus SSR Transfer State 已经正常工作了

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

时间:2022-11-02 22:00:14浏览次数:61  
标签:Spartacus Transfer ts module SSR state CMS store

在检查一些客户项目时,我注意到一旦返回 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 的源代码。

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,
      },
    },
  }
});

标签:Spartacus,Transfer,ts,module,SSR,state,CMS,store
From: https://blog.51cto.com/jerrywangsap/5818399

相关文章

  • APACHE_CVE-2021-40438-SSRF漏洞分析复现
    影响版本v2.4.48及以下版本该版本中mod_proxy模块存在一处逻辑错误,导致攻击者可以控制反向代理服务器的地址,进而导致SSRF漏洞。该漏洞影响范围较广,危害较大,利用简单,目前......
  • ssrfme(flask代码审计)
    源码#!/usr/bin/envpython##encoding=utf-8fromflaskimportFlaskfromflaskimportrequestimportsocketimporthashlibimporturllibimportsysimportos......
  • 面试官:说说React-SSR的原理
    前言所谓同构,简而言之就是,第一次访问后台服务时,后台直接把前端要显示的界面全部返回,而不是像SPA项目只渲染一个<divid="root"></div>剩下的都是靠JavaScript脚本去......
  • CG2017 PA1-2 Crossroad (十字路口) 暴力求解2 线段、射线、直线、圆两两相交的简单
    题目是上一个随笔的题目,这次只判断交点个数不求出具体坐标,还是72.5分,看来卡O(n^2)复杂度卡得死死的。这次的代码给出了简单的线段、射线、直线、圆两两相交的判断交点个数......
  • react ssr 从0到1实践
    reactssr从0到1实践Jay前端学生​关注他 24人赞同了该文章前言之前在写react性能优化这篇文章中提到了ssr的部分,社区中有一些关于ssr的......
  • 架构模式-Data Transfer Object
    一个datatransferobject,是在两个进程中传输数据的对象。两个进程间通信时,常常使用类似webservices的远程接口的方式,每一次调用都非常昂贵,每一次调用的大部分时间都浪费......
  • 发布一个定制的webpart:RssReader
    RssReaderWebPart是一个RSS新闻阅读器,RSS阅读器自动更新你定制的网站内容,保持新闻的及时性     此webpart改造自海洋工作室(​​​http://ww......
  • 关于 SAP Spartacus SSR 3.4.5 版本优化的 reuseCurrentRendering flag
    concurrency:50meansthatOptimizedSsrEnginewillperformatmost50parallelrenderingtasks.支持同时处理50个并发渲染请求。WiththeoptionreuseCurrentRe......
  • ISR与SSR对比
    ISR静态渲染:机器要求低,体验会差一些,有骨架屏、抖动等问题SSR动态渲染:正好相反,体验好,机器性能要求高,要做好各种优化这两个方向都是可以的,我们做好平衡,nextjs9.3之后才有静......
  • 爬取spa网站与ssr网站的区别
    前言在练习爬虫的时候不清楚spa与ssr网站的区别,都使用bs4直接解析网页的html,结果ssr网站输出结果,spa网站却没有输出结果,特此记录ssr网站:https://ssr1.scrape.center/page......