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

所有常规请求都用 universal engine 渲染:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第1张图片

SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第2张图片

SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第3张图片

Index 是静态页面,还得从 browser 文件夹里的资源出发:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第4张图片

读取视图实例:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第5张图片

拿到的 view 实例:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第6张图片

根据请求实例拿到其 key:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第7张图片

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

OptimizedSsrEngine

SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第8张图片

默认请求的 key 就是 originalURL:/

SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第9张图片

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

SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第10张图片

RenderingCache 里维护了一个 Map:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第11张图片

判断是否应该渲染当前请求:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第12张图片

既没有正在渲染,也没有到达并发上限,渲染策略不是 CSR,则 shouldRender 返回 true:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第13张图片

优化引擎计数器 currentConcurrency 加一。
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第14张图片

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

SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第15张图片

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

SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第16张图片

SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第17张图片

在 map 里设置一个 key 为 / 的标志位,注明其正在渲染:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第18张图片

开始调用 expressEngine 进行渲染:

SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第19张图片

renderOptions:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第20张图片

渲染完了之后,输出的 html,传入到应用程序提供的 callback 里:
SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作_第21张图片

更多Jerry的原创文章,尽在:"汪子熙":

你可能感兴趣的:(SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作)