04 · 实验 E

unstable_cache 缓存非 fetch 数据

不是所有数据都来自 fetch(如直接查数据库)。用 unstable_cache 手动包一层,也能享受数据缓存。

裸函数结果(每次执行都变)

2026-09-21T02:50:20.879Z

缓存函数结果(30 秒内复用)

2026-09-21T02:50:20.978Z

怎么观察(必须生产模式)

  1. pnpm buildpnpm start:刷新页面, 右侧"缓存函数结果"在 30 秒内不变 —— 命中了数据缓存;左侧"裸函数结果"每次执行都不同。
  2. 30 秒后的首次请求触发后台重建,缓存值才更新。
  3. 代码里打了 tags(或这里用 revalidate),可用 revalidateTag 主动清掉(见实验 D)。

关键认知

unstable_cachefetch 缓存能力的"通用版":任何异步函数都能包进去, 配合 revalidate(时间)和 tags(标签)使用。 Next 15+ 官方也推荐用它在服务端组件里缓存非 fetch 数据。