天天看点

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

入口:所有的 regular route 都使用 universal engine:

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试
SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

express 的 response 实现:

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

express application 的实现:

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试
SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

静态资源,都从 browser 目录下获取:

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试
SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

渲染完毕的 callback:

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

然后就来到 Spartacus 代码了:

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

得到 rendering key:/

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

139 行,判断请求是否被 cache 过。

如果正在渲染或者并发渲染数达到上限,则 fallback 到 CSR:

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

判断是否 timeout:

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试
SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

shouldTimeout 返回 true,必须下列任意一个条件成立:

this.ssrOptions === null

this.getRenderingStrategy(request) === RenderingStrategy.ALWAYS_SSR);

这里咋就 fallback 到 CSR 了?

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

原因:A value of 0 will instantly return the CSR page.

SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

继续阅读