Next.js 16 Cache Components 完整教學:搭配 use cache 實現即時頁面導航
Next.js 15 帶來了 PPR 和 Server Components 的成熟化,但快取管理一直是個讓人頭痛的問題。revalidate、no-store、force-cache 這些 fetch options 搞得大家暈頭轉向。
Next.js 16 的 Cache Components 就是來解決這個問題的。它引入了一個全新的快取程式模型,核心是 use cache 指令。搭配 PPR 使用後,頁面導航幾乎是即時的,使用者再也不用看到 loading spinner。
Next.js 16 帶來什麼新東西?
- Cache Components:全新的元件層級快取機制
- use cache 指令:宣告式的快取標記
- PPR 正式穩定:Partial Prerendering 從實驗性轉為穩定功能
- 即時導航:結合快取和預渲染的極速頁面切換
如果你之前學過 React Compiler 自動 Memoization,Cache Components 的概念有異曲同工之妙。
Cache Components 核心概念
Cache Components 的核心想法很簡單:把元件的渲染結果快取起來,下次需要時直接用快取版本。跟傳統的 SSG 不同的是,Cache Components 的快取粒度是「元件層級」而非「頁面層級」。同一個頁面中,有些元件可以快取(導航列、產品描述),有些需要即時渲染(使用者資訊、購物車數量)。
就是在檔案開頭加一行 use cache,框架會自動處理快取的儲存、讀取和失效。
use cache 指令詳解
檔案層級快取
在檔案最上方宣告,整個檔案中的所有元件和函式都會被快取。適合放那些很少變動的 UI 元件。
函式層級快取
只對特定函式啟用快取。適合資料庫查詢函式或 API 呼叫。
搭配 cacheLife 和 cacheTag
cacheLife 控制快取的生命週期(minutes、hours、days),cacheTag 設定標籤方便精準失效。這兩個 API 讓你能精確控制每個元件的快取行為。
搭配 PPR 的即時導航體驗
Cache Components 真正威力要搭配 PPR 才能完全發揮。PPR 在建置時預渲染頁面的靜態外殼,從 CDN 邊緣快取提供,速度接近靜態網站。動態部分包在 Suspense boundary 中串流進來。
加上 Cache Components 後,原本需要即時運算的動態部分也可以被快取。效果就是使用者在頁面之間切換時,感覺像是在用本地 app。實測在資料密集型電商網站上,導航延遲從 350ms 降到 40ms 以下。
實戰範例:電商產品頁
以電商產品頁為例,每個元件根據資料的更新頻率選擇不同的快取策略:ProductInfo 用長期快取、PriceTicker 用短時快取(幾分鐘更新)、CartButton 即時渲染、ProductReviews 用中期快取。這種精確到元件層級的控制是 Next.js 16 最大的進步。
快取失效策略
快取最難的永遠是失效。Next.js 16 提供幾種失效機制:
- 時間型失效:透過 cacheLife 設定 TTL
- 標籤型失效:透過 revalidateTag 精準失效特定資料
- 路徑型失效:透過 revalidatePath 失效整個路徑
- 按需失效:在 Server Action 中觸發失效
最佳實踐是組合使用:設定基礎 TTL,加上按需失效作為即時更新的保險。
從 Next.js 15 遷移指南
- 升級 Next.js 到 16.x 版本
- 確認 PPR 設定已啟用
- 把現有的 fetch cache 選項改為元件層級的 use cache
- 移除不必要的 revalidate 設定,改用 cacheLife
- 逐步把適合快取的元件標記為 Cache Components
如果你之前用過 Zustand 狀態管理,概念上相通——都是把管理從全域推到更精細的層級。
效能對比與測量
| 指標 | Next.js 15 (SSR) | Next.js 15 (PPR) | Next.js 16 (Cache+PPR) |
|---|---|---|---|
| TTFB | 350-550ms | 40-90ms | 30-60ms |
| LCP | 1.2-1.8s | 0.6-0.9s | 0.3-0.5s |
| 導航延遲 | 300-500ms | 150-250ms | 20-50ms |
| 伺服器負載 | 100% | 60-70% | 20-30% |
導航延遲從 300ms 降到 20ms,這不是微調,而是體驗層級的跨越。Next.js 16 的 Cache Components 是今年最有感的前端效能改進,絕對值得投資時間學習和導入。
繼續閱讀
Next.js 16 View Transitions API 實戰:用原生轉場動畫打造絲滑頁面切換體驗
相關文章
你可能也喜歡
探索其他領域的精選好文