关于 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 的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAD中怎么添加EPS虚拟打印机
- 下一篇: CAD怎么画图纸框?cad图纸框的绘制方