是否可预渲染并公开共享?
✕ 默认不共享GET 只是必要条件之一,不是自动缓存开关。
把“整个响应能否公开复用”“处理器是否要在请求时执行”“某个数据函数能否单独缓存”分开判断,避免把三个问题压成一句“GET 会缓存”。
本项目关闭 Cache Components;没有显式 force-static 时,Route Handler 默认按请求执行。
GET 只是必要条件之一,不是自动缓存开关。
默认动态 Route Handler 会在真实请求到达时运行。
勾选独立 helper 后再判断;不要把 'use cache' 直接写进 GET 主体。
每一步都显示文字状态,不只依赖颜色。
只有 GET 继续讨论整响应预渲染;HEAD、POST、PATCH 等不进入这一层。
当前没有勾选请求时依赖或用户专属数据。
Cache Components 关闭且未声明 force-static。
整响应与内部数据读取要分开判断。
// next.config.ts
const nextConfig = {
cacheComponents: false,
}
// app/api/catalog/route.ts
export async function GET() {
// 默认按请求执行;GET 并不自动等于缓存
return Response.json({ scope: 'public' })
}
用反例检查自己是否混淆了三层缓存。