路由段配置(Route Segment Config)
如果启用了
dynamicIO标志,则本页概述的选项将被禁用,并最终在未来版本中被弃用。
路由段选项允许你通过直接导出以下变量来配置 页面、布局 或 路由处理器 的行为:
| 选项 | 类型 | 默认值 |
|---|---|---|
experimental_ppr | boolean | |
dynamic | 'auto' | 'force-dynamic' | 'error' | 'force-static' | 'auto' |
dynamicParams | boolean | true |
revalidate | false | 0 | number | false |
fetchCache | 'auto' | 'default-cache' | 'only-cache' | 'force-cache' | 'force-no-store' | 'default-no-store' | 'only-no-store' | 'auto' |
runtime | 'nodejs' | 'edge' | 'nodejs' |
preferredRegion | 'auto' | 'global' | 'home' | string | string[] | 'auto' |
maxDuration | number | 由部署平台设置 |
选项
experimental_ppr
为布局或页面启用 部分预渲染 (PPR)。
- TypeScript
layout.tsx | page.tsx
export const experimental_ppr = true
// true | false
- JavaScript
layout.js | page.js
export const experimental_ppr = true
// true | false
dynamic
将布局或页面的动态行为更改为完全静态或完全动态。
- TypeScript
layout.tsx | page.tsx | route.ts
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'
- JavaScript
layout.js | page.js | route.js
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'
提示:
app目录中的新模型倾向于在fetch请求级别进行细粒度缓存控制,而不是pages目录中页面级别的getServerSideProps和getStaticProps的二元全有或全无模型。dynamic选项是一种便捷的方式,可以重新选择之前的模型,并提供更简单的迁移路径。
-
'auto'(默认):默认选项,尽可能多地缓存,而不阻止任何组件选择动态行为。 -
'force-dynamic':强制 动态渲染,这将在请求时为每个用户渲染路由。此选项等同于:- 将布局或页面中每个
fetch()请求的选项设置为{ cache: 'no-store', next: { revalidate: 0 } }。 - 将段配置设置为
export const fetchCache = 'force-no-store'
- 将布局或页面中每个
-
'error':通过在任何组件使用 动态 API 或未缓存数据时导致错误,强制静态渲染并缓存布局或页面的数据。此选项等同于:pages目录中的getStaticProps()。- 将布局或页面中每个
fetch()请求的选项设置为{ cache: 'force-cache' }。 - 将段配置设置为
fetchCache = 'only-cache'。
-
'force-static':通过强制cookies、headers()和useSearchParams()返回空值,强制静态渲染并缓存布局或页面的数据。可以在使用force-static渲染的页面或布局中使用revalidate、revalidatePath或revalidateTag。
提示:
- 有关如何从
getServerSideProps和getStaticProps迁移到dynamic: 'force-dynamic'和dynamic: 'error'的说明,可以在 升级指南 中找到。
dynamicParams
控制访问未通过 generateStaticParams 生成的动态段时发生的情况。
- TypeScript
layout.tsx | page.tsx
export const dynamicParams = true // true | false,
- JavaScript
layout.js | page.js | route.js
export const dynamicParams = true // true | false,
true(默认):未包含在generateStaticParams中的动态段将按需生成。false:未包含在generateStaticParams中的动态段将返回 404。
提示:
- 此选项替换了
pages目录中getStaticPaths的fallback: true | false | blocking选项。- 要在首次访问时静态渲染所有路径,你需要在
generateStaticParams中返回空数组或使用export const dynamic = 'force-static'。- 当
dynamicParams = true时,段使用 流式服务端渲染。
revalidate
设置布局或页面的默认重新验证时间。此选项不会覆盖单个 fetch 请求设置的 revalidate 值。
- TypeScript
layout.tsx | page.tsx | route.ts
export const revalidate = false
// false | 0 | number
- JavaScript
layout.js | page.js | route.js
export const revalidate = false
// false | 0 | number
false(默认):默认启发式方法,缓存任何将其cache选项设置为'force-cache'或在 动态 API 使用之前发现的fetch请求。语义上等同于revalidate: Infinity