用途:Cache Components(Next.js 16+)用于启用部分预渲染(PPR),在同一路由中混合静态、缓存与动态内容。开启方式是在 next.config.ts 中设置 cacheComponents: true,替代旧的 experimental.ppr 标志。
主要能力:内容分为三类——静态(同步代码、导入、纯计算,构建时预渲染)、缓存(异步数据用 'use cache' 标记)、动态(必须实时刷新的运行数据,用 Suspense 包裹流式输出)。'use cache' 可标注在文件、组件或函数级别。缓存配置支持内置 profile(default、minutes、hours、days、weeks、max),也可用 cacheLife 传对象设置 stale、revalidate、expire;'use cache: remote' 使用平台缓存(如 Redis、KV),'use cache: private' 允许在合规要求下访问运行时 API。失效方面:cacheTag 为内容打标签,updateTag 在同一请求内立即失效并读到新数据,revalidateTag 走后台重新验证(stale-while-revalidate)。缓存键自动由构建 ID、函数 ID、可序列化参数和闭包变量生成。
必要用法:在需缓存的异步函数内写 'use cache' 并配合 cacheLife/cacheTag;动态数据包裹在 Suspense 中。'
限制:不能在 use cache 内访问 cookies()、headers()、searchParams,须在外部提取后作为参数传入(参数自动进入缓存键);例外是 'use cache: private'。不支持 Edge runtime,需 Node.js;不支持静态导出,需服务端。Math.random()、Date.now() 等非确定值在 use cache 内只在构建时执行一次,需要按请求随机时使用 next/server 的 connection() 延后到请求时。适用场景为需要在单页同时获得静态壳、可缓存数据和实时数据的 Next.js 应用。