因为使用了 headers() 这个 dynamic function, Next.js 无法在构建时预渲染这个页面,每次请求都会在服务器上重新渲染。
// 使用了 dynamic function
const headersList = await headers();
const userAgent = headersList.get('user-agent');
2025-12-27T14:39:27.906Z
🧪 测试方法:
User-Agent:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
这个信息来自请求头,每次请求可能不同。静态路由无法获取这种动态信息。
| 特性 | 静态路由 (Static) | 动态路由 (Dynamic) |
|---|---|---|
| 渲染时机 | 构建时(pnpm build) | 运行时(每次请求) |
| Full Route Cache | ✅ 使用 | ❌ 不使用 |
| 刷新页面 | 时间戳不变 | 时间戳变化 |
| 构建输出 | ○ (Static) | λ (Dynamic) |
| 生成文件 | .html 文件 | 只有 .js 文件 |
| 性能 | ⚡ 最快 | 🔄 较慢 |
| 使用场景 | 博客、文档、产品页 | 用户仪表盘、个性化内容 |
基于用户 cookies 或 headers 的内容
需要每次请求都获取最新数据
基于 searchParams 的内容
用户仪表盘、购物车、订单等