关于 SAP 电商云 Spartacus UI Transfer State 冗余 API 请求发送的讨论

简介: 关于 SAP 电商云 Spartacus UI Transfer State 冗余 API 请求发送的讨论

Angular 的 TransferState 类使服务器端渲染 (SSR) 和预渲染 (Prerendered-SSR) Angular 应用程序能够使用从服务器获取的数据并且有效地在浏览器中渲染。

如果您使用的是 SSR 或预渲染应用程序策略,那么该过程大致是这样的:

  • 在服务器上预渲染或渲染应用程序
  • 浏览器获取呈现的 HTML 和 CSS 并显示“静态”应用程序
  • 浏览器获取、解析、解释和执行 JavaScript
  • Angular 应用程序被引导,用新的“正在运行”的应用程序替换整个 DOM 树
  • 应用程序已初始化,通常从远程服务器或 API 获取数据
  • 用户与应用程序交互

这个场景有两个问题:

  • DOM hydration 会重复替换整个节点树并重新绘制应用程序
  • 应用程序会重复获取理论上已经读取过的数据,并由于 SSR 或预渲染站点策略而显示给用户

第一个问题是目前在 Angular 中没有解决的问题,但是,第二个问题已经有了解决方案,这就是本文论述的 Angular TransferState 机制。

Transfer State 是一种策略:

  • 使用 SSR 或预渲染策略获取渲染完整“静态”应用程序所需的数据
  • 序列化数据,并使用初始文档 (HTML) 响应发送数据
  • 在应用程序初始化时,在运行时解析序列化数据,避免数据的冗余获取

从技术上讲,数据通过 JSON.stringify() 序列化并通过 JSON.parse() 解析。但是,通常我们不需要担心这一点,因为这是由 Angular 中的 TransferState 服务为我们执行的。


即使服务器在 SSR 模式下工作,在 Chrome 浏览器 network 里,仍然能观察到 CMS OCC API 的调用。

已经开启了 products 和 cms 的 ssrTransfer:

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

  • products:确实在客户端没有观察到 OCC API 调用去读取 product 数据。
  • cmss:默认情况下,每次 route 发生变化时,Spartacus 都会重新加载 CMS 页面数据,不管它是否已经存在于 ngrx store 里。

客户可以通过修改配置项:Spartacus config routing.loadStrategy: RouteLoadStrategy.ONCE 来更改这个行为。

以上逻辑实现于 CmsPageGuard.shouldReload 方法里。

相关文章
|
7天前
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
8天前
|
API Python
4. salt-api请求salt-minion执行任务 tornado超时报错
4. salt-api请求salt-minion执行任务 tornado超时报错
|
10天前
|
缓存 测试技术 API
电商平台 API 接入技术要点深度剖析
本文介绍了高效使用电商平台API的关键步骤。首先,深入理解API文档,明确功能权限与参数格式要求;其次,选择合适的接入方式,如HTTP/HTTPS协议和RESTful API;接着,实施身份验证与授权机制,确保数据安全传输;此外,还需关注性能优化、安全防护、监控与日志记录,以提升系统稳定性和响应速度;最后,进行充分测试与调试,并关注API版本更新,确保长期兼容性。
|
13天前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
18 4
|
9天前
|
自然语言处理 搜索推荐 数据挖掘
电商 API 接口:电商领域的强大技术引擎
在数字化浪潮中,电商API接口作为连接系统的桥梁,已成为电商市场的核心技术引擎。它通过实时库存信息、多样化支付等功能提升用户体验,支持自动化订单处理,促进数据流通与分析,并允许定制化开发,集成移动应用,从而增强系统灵活性和业务竞争力。
|
1月前
|
测试技术 API 数据库
电商API接口定制与开发系列之——商品详情接口介绍
——在成长的路上,我们都是同行者。这篇关于API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 在电商API接口定制与开发系列中,商品详情接口是至关重要的一部分,它直接关系到用户浏览商品、获取商品信息的关键环节。以下是对商品详情接口的详细介绍:
|
2月前
|
Java 数据库连接 缓存
Hibernate性能调优:五大秘籍,让应用效能飙升,告别慢如蜗牛的加载,体验丝滑般流畅!
【8月更文挑战第31天】本文深入探讨了提升Hibernate应用性能的五大技巧,包括选择合适的缓存策略、优化查询语句、合理使用Eager与Lazy加载、批量操作与事务管理以及利用索引和数据库优化。通过正确配置多级缓存、分页查询、延迟加载、批量处理及合理创建索引,能够显著提高应用响应速度与吞吐量,改善用户体验。这些技巧需根据具体应用场景灵活调整,以实现最佳性能优化效果。
74 0
|
5月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
5月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
|
5月前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍