Full Route Cache 是 Next.js 在构建时自动渲染并缓存整个路由的机制。 这是一种优化,允许服务器为每个请求提供缓存的路由,而不是在服务器上重新渲染。
官方说明:
"Next.js automatically renders and caches routes at build time. This is an optimization that allows you to serve the cached route instead of rendering on the server for every request, resulting in faster page loads."
2025-12-17T09:54:09.435Z
🧪 测试方法:
在构建时预渲染并缓存,运行时直接返回缓存的 HTML
export default function Page() {
// 没有 dynamic functions
return <div>Static</div>
}
构建输出: ○ (Static)
每次请求时在服务器上渲染,不使用 Full Route Cache
export default function Page() {
// 使用了 dynamic functions
const headers = headers();
return <div>Dynamic</div>
}
构建输出: λ (Dynamic)
使用以下任何一个功能会让路由变成动态渲染(不使用 Full Route Cache):
cookies()读取 cookies
headers()读取请求头
searchParams使用 URL 查询参数
fetch(..., { cache: 'no-store' })禁用数据缓存
export const dynamic = 'force-dynamic'强制动态渲染
export const revalidate = 0禁用缓存
$ pnpm build
Route (app) Size First Load JS
○ /cache-test/full-route-cache ← 静态
λ /cache-test/full-route-cache/dynamic ← 动态
○ = Static(静态,使用 Full Route Cache)
λ = Dynamic(动态,不使用 Full Route Cache)
.next/server/app/cache-test/full-route-cache/
page.html ← 预渲染的 HTML 文件
page_client-reference-manifest.js
静态页面会生成 .html 文件,动态页面只有 .js 文件
开发环境:
pnpm dev → 刷新页面 → 时间变化 ❌
生产环境:
pnpm build && pnpm start → 刷新页面 → 时间不变 ✅
直接返回预渲染的 HTML,无需在服务器上重新渲染
不需要为每个请求执行 React 渲染
可以配合 CDN 进一步加速
减少服务器计算资源消耗