如何在Next.js 13的App Router中完全退出静态站点生成?
在Next.js 13 App Router中针对特定页面禁用静态站点生成的方法
你可以通过以下几种方式,让Next.js 13 App Router中的特定页面完全退出静态站点生成,强制采用动态渲染:
强制开启动态渲染:在目标页面的
page.js文件顶部添加如下配置,这会让页面在每次用户请求时都在服务器端动态生成,完全跳过静态构建阶段:export const dynamic = 'force-dynamic';通过动态函数触发动态渲染:如果页面代码中使用了
cookies()、headers()这类Next.js内置的动态函数,或者在组件内发起了未配置缓存的动态数据请求(比如fetch(url, { cache: 'no-store' })),页面会自动切换为动态渲染模式,无需额外配置。动态路由下禁用静态参数预生成:对于动态路由页面(如
app/[slug]/page.js),除了设置dynamic: 'force-dynamic'外,还可以配合dynamicParams: true,确保所有未通过generateStaticParams预生成的路由都采用动态渲染。不过如果要彻底禁用静态生成,直接使用force-dynamic即可覆盖这类场景。
需要注意的是,force-dynamic是最直接的方式,无论页面是否包含静态数据,都会强制走动态渲染流程,适合需要实时数据或依赖请求上下文的页面。
内容的提问来源于stack exchange,提问作者Claude Hasler
相关产品推荐
相关产品推荐

