当前位置:网站首页>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,将负载通过构造函数参数传入.
边栏推荐
- imx6ull看门狗使用
- PyQt5 rapid development and actual combat 10.1 Get city weather forecast
- PyQt5 rapid development and actual combat 9.7 Automated testing of UI layer
- 【CPU设计实战】简单流水线CPU设计
- PAT exam summary (exam experience)
- 通过斐波那契数再谈函数递归2.0
- 最长算术(暑假每日一题 11)
- 三相PWM整流器预测直接功率控制
- MySQL面试八股文(2022最新整理)
- [core]-ARMV7-A, ARMV8-A, ARMV9-A Architecture Introduction "Recommended Collection"
猜你喜欢
Markdown编辑器语法
Use docker to build mysql master-slave
CentOS7 installation MySQL graphic detailed tutorial
分布式监视 Zabbix 和 Prometheus 到底怎么选?千万别用错了!
小试牛刀—猜数字游戏
imx6ull看门狗使用
The 2nd activity of the TOGAF10 Standard Reading Club continues wonderfully, and the highlights will be reviewed!
想吃菌子,当然是自己上山找了
alert(1) (haozi.me)靶场练习
MySQL面试八股文(2022最新整理)
随机推荐
聊聊 SAP 产品 UI 上的消息显示机制
anaconda虚拟环境安装pytorch gpu版本
ipv4和ipv6对比(IPV4)
CWE4.8 -- 2022年危害最大的25种软件安全问题
Cognitive-exercise rehabilitation medical robot application design
Centos7 install mysql5.7 steps (graphical version)
跨境电商小知识之跨境电商物流定义以及方式讲解
连续变量离散化教程
基本语法(二)
IDEA的database使用教程(使用mysql数据库)
Basic use of dosbox [easy to understand]
MySQL面试八股文(2022最新整理)
The 2nd activity of the TOGAF10 Standard Reading Club continues wonderfully, and the highlights will be reviewed!
PyQt5快速开发与实战 10.1 获取城市天气预报
荣耀手机参数写错,客服认为没错
Google Chrome(谷歌浏览器)安装使用
[Shader] Shader official example [easy to understand]
Indoor real-time laser SLAM control method based on biological excitation neural network
0x80070570 The file or directory is damaged and cannot be deleted (how to delete 0x80070091)
IDEA连接MySQL数据库并执行SQL查询操作