关于 SAP Spartacus CSR fallback 之后,是否仍然会继续进行 SSR 的处理
Posted JerryWangSAP
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 SAP Spartacus CSR fallback 之后,是否仍然会继续进行 SSR 的处理相关的知识,希望对你有一定的参考价值。
来自 nguniversal 的 express engine 渲染完了后,渲染完毕的 html 源代码保存在 150 行代码 html 里,callback 就是 Spartacus 团队开发的 ssr optimization engine 的实现:
回调执行时,maxRenderTimeout 不为空,说明 maxRenderTime 驱动的 setTimeout 尚未执行,这说明 maxRenderTime 超时没有发生,因此不会执行到第 170 行。
先调用 callback 把 html 返回给请求端:
再保存到 cache 里:
下面测试直到 timeout 时间到达,仍未开始 render,fallback 到 CSR 之后,是否还会在后台将 SSR 执行完毕。
让断点停在这里,等待 timeout 即 90秒,一分半钟。
去做了一会家务回来,F8,果然 CSR fallback 了:
也看到了对应的 log:SSR rendering exceeded timeout 90000, fallbacking to CSR for /
如果此时 maxRenderTimeout 时间也到达了,那么会执行上图绿色高亮代码,将 maxRenderTimeout 清空,然后我们指定的 callback 会被调用到。
注意,在上图的上下文里,SSR 已经成功完成了,只是因为 maxRenderTimeout 已经到达,因此渲染好的 HTML 被丢弃。如果 timeout 到达但是 maxRenderTimeout 没有到达,则渲染好的 HTML 会进一步得到处理。
更多Jerry的原创文章,尽在:"汪子熙":
以上是关于关于 SAP Spartacus CSR fallback 之后,是否仍然会继续进行 SSR 的处理的主要内容,如果未能解决你的问题,请参考以下文章
关于 SAP Spartacus 重定向部分外部 url 到后台系统的问题
SAP Spartacus 如何获得当前渲染页面的 CMS 元数据
SAP Spartacus Reference App Structure
如何在 SAP Commerce Cloud Portal 构建和部署 SAP Spartacus Storefront