Menu

cacheLife

cacheLife 选项允许你在使用带有 use cache 指令cacheLife 函数时,在组件、函数或文件级别定义自定义配置,从而实现对缓存更细粒度的控制。

使用方法

要使用 cacheLife,需要启用 dynamicIO 标志 并在 next.config.js 文件中按如下方式定义配置:

next.config.js
module.exports = {
  experimental: {
    dynamicIO: true,
    cacheLife: {
      blog: {
        stale: 3600, // 1 小时
        revalidate: 900, // 15 分钟
        expire: 86400, // 1 天
      },
    },
  },
}

现在你可以在组件、函数或文件中按如下方式使用这个自定义的 blog 配置:

app/actions.ts
import { unstable_cacheLife as cacheLife } from 'next/cache'
 
export async function getCachedData() {
  'use cache'
  cacheLife('blog')
  const data = await fetch('/api/data')
  return data
}

配置结构

配置对象具有以下格式的键值:

属性描述要求
stalenumber客户端应该缓存一个值而不检查服务器的持续时间。可选
revalidatenumber服务器上缓存应该刷新的频率;在重新验证时可能会提供过期的值。可选
expirenumber一个值可以保持过期状态的最长持续时间,超过此时间将切换到动态获取;必须长于 revalidate可选 - 必须长于 revalidate