天天看點

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 頁面的響應邏輯調試

繼續閱讀