[note] Rendering Pattern (feat Next.js)
SSG (Static Site Generate)
「畫面渲染」和「資料拉取」都在 build time 是就都出來完,並變成「靜態檔案」,並**不是在 sever 收到 request 後才開始動作**。
- TTFB, FCP, TTI 較好
- 當頁面變的越來越多時,打包也會需要更長的時間
- 資料在 build time 時就已經寫死,沒辦法動態更新
ISR (Incremental Static Regeneration)
可以視為 SSG 的一種特例,差別在於可以設定靜態檔案過期的時間(revalidate
),一旦靜態檔案過期,就會觸發 server 重新 build 一次該靜態頁面。
- 保有 SSG 的好處,但又能夠在一定時間後更新頁面
CSR (Client Side Rendering)
「畫面渲染(包括 HTML 和事件處理)」和「資料拉取」都從 client 處理
- 專案越大,使用者要下載 bundle JS files 也越大
- 當 bundle size 越大時,檔案下載完成前使用者看到的都是空白畫面(或 loading),可能導致 FCP, LCP 和 TTI 都變差
- 畫面上的不同區塊不用一次全部呈現,可以逐塊顯示