当前位置:网站首页>SAP e-commerce cloud Spartacus SSR Optimization Engine execution sequence of several timeouts
SAP e-commerce cloud Spartacus SSR Optimization Engine execution sequence of several timeouts
2022-07-31 12:44:00 【HUAWEI CLOUD】
SSR optimization engine option 代码:
const ngExpressEngine = NgExpressEngineDecorator.get(engine, { timeout: 9000, concurrency: 1, forcedSsrTimeout:90000, maxRenderTime:1000, cache: true, cacheSize: 10, renderingStrategyResolver: (req) => RenderingStrategy.DEFAULT});
(1) 首先是 MaxRenderTimeout 超时到达:
显示 log:
然后是:
最后:
注意,这里的 log 不会打印到控制台上:
这两个 timeout 值,谁的数值大,则谁对应的 timeout callback 就会后执行.
以 CmsSetPageSuccessIndex 为例:
运行时该 Action 类包含三大字段:
(1) meta
(2) payload
(3) type
meta
meta 包含的 loader 字段和 meta 本身都是一个 object.
meta.entityId 和 entityType 是该 action payload 的标识位.
loader 表明该 entity 加载状况.
payload
包含的业务数据:
type
字符串类型.
从 上图 Prototype 能看出,CmsSetPageSuccessIndex 的原型链类为 EntitySuccessAction.
这一点也能从其实现代码看出:
export class CmsSetPageSuccessIndex extends StateUtils.EntitySuccessAction { readonly type = CMS_SET_PAGE_SUCCESS_INDEX; constructor(pageContext: PageContext, payload: Page) { super(pageContext.type, pageContext.id, payload); }}
查看 EntitySuccessAction 的实现:
属性1,meta 属性,定义在该类里.
属性2,payload,通过构造函数参数定义.
属性3,type,定义在上图81行,然后被 CmsSetPageSuccessIndex 重载.
EntitySuccessAction 构造函数接收三个参数:entityType,id 和 payload.
通过 entityType 和 id,生产出 meta 字段.
entitySuccessMeta 可以看成一个构造器或者工厂函数:
根据 entityType 和 id,生产出 EntityLoaderMeta, 后者是 EntityMeta 和 LoaderMeta 的联合.
export interface EntityMeta { entityType: string; entityId: string | string[]; entityRemove?: boolean;}export interface LoaderMeta { entityType: string; loader: { load?: boolean; error?: any; success?: boolean; };}
采用三个点的语法,是因为这两个 interface,都有同名字段:entityType
LoaderMeta 的运行时数据,通过构造器 loadMeta 制造:
export function loadMeta(entityType: string): LoaderMeta { return { entityType: entityType, loader: { load: true, }, };}
EntityMeta 字段的值,通过 entityMeta 构造:
export function entityMeta(type: string, id: string | string[]): EntityMeta { return { entityType: type, entityId: id, };}
运行时通过 PageEffect 从 Commerce Cloud 后台读取 CMS 数据成功后,新建 ActionClass,将负载通过构造函数参数传入.
边栏推荐
- CentOS7 - yum install mysql
- 365-day challenge LeetCode1000 questions - Day 044 Maximum element in the layer and level traversal
- ipv4和ipv6对比(IPV4)
- 最长算术(暑假每日一题 11)
- 亲测可用!!!WPF中遍历整个窗口的所有TextBox组件,对每个输入框做非空判断。
- Optimization of five data submission methods
- 列表页优化思路
- 基于生物激励神经网络的室内实时激光SLAM控制方法
- 荣耀手机参数写错,客服认为没错
- am335x 看门狗驱动&看门狗应用例程序
猜你喜欢
随机推荐
ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)
Using SQL Server FOR XML and FOR JSON syntax on other RDBMSs with jOOQ
A Week of Wonderful Content Sharing (Issue 14)
Two methods of NameNode failure handling
SAP 电商云 Spartacus UI 和 Accelerator UI 里的 ASM 模块
Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
0x80070570 The file or directory is damaged and cannot be deleted (how to delete 0x80070091)
Comparison of ipv4 and ipv6 (IPV4)
Qt鼠标穿透
电脑重要文件很多,如何备份比较安全?
快速学完数据库管理
【Shader】Shader官方示例[通俗易懂]
sqlalchemy 判断一个array 类型的字段是否和一个array有至少一个一致的数据
聊聊 SAP 产品 UI 上的消息显示机制
消息队列面试题(2022最新整理)
中望3D 2023正式发布,设计仿真制造一体化缩短产品开发周期
基于verilog的CRC校验(汇总)
busybox之reboot命令流程分析
centos7安装mysql5.7
dosbox基础使用[通俗易懂]