💡 核心理念:Next.js 15+ 标志着框架从“魔法化自动缓存”转向了“显式控制与标准化”。现在的默认原则是:数据默认动态 (Dynamic by default),需要缓存时手动声明;API 默认异步 (Async by default),为未来的 I/O 优化铺路。
fetch 请求默认被缓存 (force-cache),GET 路由默认是静态的。revalidate: 0。原则: "Uncached by Default" (默认不缓存)。
行为: fetch 请求默认是 no-store (动态),GET 路由处理函数如果没有特殊配置,默认视为动态渲染。
操作: 只有当你明确知道这个数据需要缓存时,才添加配置。
代码对比:
// Next.js 14 (默认缓存)
fetch('<https://api.com/data>');
// Next.js 15 (默认不缓存,需手动开启)
fetch('<https://api.com/data>', { cache: 'force-cache' });
// 或者使用新的 'use cache' 指令 (React 19/Next 16)
params (动态路由参数), searchParams (查询参数), cookies(), headers()。旧写法 (同步):
// ❌ 在 Next.js 15+ 会报错或报警告
const { slug } = params;
const cookieStore = cookies();
const token = cookieStore.get('token');
新写法 (异步 - 必须 await):
// ✅ 正确写法
const { slug } = await params;
const cookieStore = await cookies();
const token = cookieStore.get('token');
Next.js 15 是建立在 React 19 之上的,以下三个概念是开发的基石:
<form action={fn}> 或事件处理函数调用在服务端运行的异步函数。/api/... 接口了。数据库逻辑直接写在组件旁边(或单独文件中),像调用本地函数一样调用后端逻辑。