SAP Spartacus 服务器端渲染单步调试步骤

举报
Jerry Wang 发表于 2022/07/20 12:34:44 2022/07/20
【摘要】 所有常规请求都用 universal engine 渲染:Index 是静态页面,还得从 browser 文件夹里的资源出发:读取视图实例:拿到的 view 实例:根据请求实例拿到其 key:呈现的页面保存在内存中,以便在下次请求时提供服务。 如果 cache 设置为 false,则一旦成功返回第一个成功响应,响应就会被驱逐。OptimizedSsrEngine默认请求的 key 就是 or...

所有常规请求都用 universal engine 渲染:

Index 是静态页面,还得从 browser 文件夹里的资源出发:

读取视图实例:

拿到的 view 实例:

根据请求实例拿到其 key:

呈现的页面保存在内存中,以便在下次请求时提供服务。 如果 cache 设置为 false,则一旦成功返回第一个成功响应,响应就会被驱逐。

OptimizedSsrEngine

默认请求的 key 就是 originalURL:/

去 cache 里查找这个 / 之前已经渲染过了吗?

RenderingCache 里维护了一个 Map:

判断是否应该渲染当前请求:

既没有正在渲染,也没有到达并发上限,渲染策略不是 CSR,则 shouldRender 返回 true:

优化引擎计数器 currentConcurrency 加一。

然后检查 shouldTimeout:如果传入了 timeout 值,才会 timeout:

例如 timeout 为 7秒,则7秒后,执行 fallbackToCSR,那么7秒内完成渲染呢?

在 map 里设置一个 key 为 / 的标志位,注明其正在渲染:

开始调用 expressEngine 进行渲染:

renderOptions:

渲染完了之后,输出的 html,传入到应用程序提供的 callback 里:

前文:SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作

入口:

进入 platform-server.js:

入口:

最终在服务器端执行 bootstrap,输入 Component 为 AppComponent:

这些调用栈和在客户端执行是一样的:

一旦进入这个调用,说明服务器端应用程序的渲染已经结束了:

html 变量包含了渲染好的 HTML 源代码:

首先把渲染好的应用程序源代码返回给浏览器:

如果启用了缓存,将渲染结果放到 map 里:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。