cacheLife 档案对比
所有函数调用同一个 500ms 慢查询。预渲染时各函数各执行一次并写入静态壳; 静态壳内的 executedAt 在重新生成前保持不变 —— 档案差异体现在何时触发后台刷新(revalidate)与何时彻底过期(expire)。
| 档案 | 说明 | 执行时刻 | 计数 |
|---|---|---|---|
| seconds 档案请求时执行中… | |||
| minutes | stale 5m / revalidate 1m / expire 1h —— 频繁更新(社交 feed、新闻) | 2026-09-04T14:58:03.939Z | 3 |
| hours | stale 5m / revalidate 1h / expire 1d —— 每天更新多次(库存、天气) | 2026-09-04T14:58:03.940Z | 4 |
| days | stale 5m / revalidate 1d / expire 1w —— 每天更新(博客文章) | 2026-09-04T14:58:03.940Z | 5 |
| demo-custom(自定义) | stale 5m / revalidate 10m / expire 1h —— next.config.ts 中定义 | 2026-09-04T14:58:03.940Z | 6 |
| 内联对象 | stale 2m / revalidate 5m / expire 30m —— 一次性微调 | 2026-09-04T14:58:03.940Z | 7 |
评估要点:
- 每个带
use cache的作用域建议显式指定 cacheLife, 省略时用 default(stale 5m / revalidate 15m / expire 从不过期) - 短生命周期(revalidate=0 或 expire < 5min)自动从预渲染中排除, 变成请求时才解析的「动态洞」,必须配
<Suspense>—— 本页 seconds 行就是实例(build 阶段会因缺 Suspense 直接报错) - stale < 30s 的缓存同样不进预渲染 —— 客户端 prefetch 在用户点击前就会过期
- 嵌套
use cache时,外层若无显式 cacheLife, 会受内层较短生命周期传播影响;显式声明可阻断传播