Конфигурация сегментов маршрута
Опции сегментов маршрута позволяют настроить поведение страницы, макета или обработчика маршрута путем прямого экспорта следующих переменных:
Опция | Тип | По умолчанию |
---|---|---|
dynamic | 'auto' | 'force-dynamic' | 'error' | 'force-static' | 'auto' |
dynamicParams | boolean | true |
revalidate | false | 'force-cache' | 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 | Зависит от платформы |
export const dynamic = 'auto'
export const dynamicParams = true
export const revalidate = false
export const fetchCache = 'auto'
export const runtime = 'nodejs'
export const preferredRegion = 'auto'
export const maxDuration = 5
export default function MyComponent() {}
export const dynamic = 'auto'
export const dynamicParams = true
export const revalidate = false
export const fetchCache = 'auto'
export const runtime = 'nodejs'
export const preferredRegion = 'auto'
export const maxDuration = 5
export default function MyComponent() {}
Важно знать:
- Значения параметров конфигурации должны быть статически анализируемыми. Например,
revalidate = 600
допустимо, аrevalidate = 60 * 10
— нет.
Параметры
dynamic
Изменяет динамическое поведение макета или страницы на полностью статическое или полностью динамическое.
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'
export const dynamic = 'auto'
// 'auto' | 'force-dynamic' | 'error' | 'force-static'
Важно знать: В новой модели директории
app
предпочтение отдается детальному управлению кэшированием на уровне запросовfetch
, а не бинарной модели "всё или ничего" изgetServerSideProps
иgetStaticProps
в директорииpages
. Параметрdynamic
позволяет вернуться к предыдущей модели для удобства и упрощения миграции.
'auto'
(по умолчанию): Кэшировать максимально возможное количество данных, не препятствуя динамическому поведению компонентов.'force-dynamic'
: Принудительно динамический рендеринг и получение некэшированных данных, отключая кэширование запросовfetch
и всегда выполняя ревалидацию. Эквивалентно:getServerSideProps()
в директорииpages
.- Установке параметра
{ cache: 'no-store', next: { revalidate: 0 } }
для каждого запросаfetch()
. - Установке конфигурации сегмента
export const fetchCache = 'force-no-store'
.
'error'
: Принудительно статический рендеринг и кэширование данных, вызывая ошибку при использовании динамических функций или некэшированных данных. Эквивалентно:getStaticProps()
в директорииpages
.- Установке параметра
{ cache: 'force-cache' }
для каждого запросаfetch()
. - Установке конфигурации сегмента
fetchCache = 'only-cache', dynamicParams = false
. dynamic = 'error'
изменяет значениеdynamicParams
по умолчанию сtrue
наfalse
. Можно вернуть динамический рендеринг для параметров, не сгенерированныхgenerateStaticParams
, установивdynamicParams = true
вручную.
'force-static'
: Принудительно статический рендеринг и кэширование данных, заставляяcookies()
,headers()
иuseSearchParams()
возвращать пустые значения.
Важно знать:
- Инструкции по миграции с
getServerSideProps
иgetStaticProps
наdynamic: 'force-dynamic'
иdynamic: 'error'
можно найти в руководстве по обновлению.
dynamicParams
Управляет поведением при посещении динамического сегмента, не сгенерированного с помощью generateStaticParams.
export const dynamicParams = true // true | false,
export const dynamicParams = true // true | false,
true
(по умолчанию): Динамические сегменты, не включенные вgenerateStaticParams
, генерируются по запросу.false
: Динамические сегменты, не включенные вgenerateStaticParams
, возвращают ошибку 404.
Важно знать:
- Этот параметр заменяет опцию
fallback: true | false | blocking
изgetStaticPaths
в директорииpages
.- При
dynamicParams = true
сегмент использует Потоковый серверный рендеринг (Streaming Server Rendering).- Использование
dynamic = 'error'
илиdynamic = 'force-static'
изменяет значениеdynamicParams
по умолчанию наfalse
.
revalidate
Устанавливает время ревалидации по умолчанию для макета или страницы. Не переопределяет значение revalidate
, установленное отдельными запросами fetch
.
export const revalidate = false
// false | 'force-cache' | 0 | number
export const revalidate = false
// false | 'force-cache' | 0 | number
false
(по умолчанию): Кэширует запросыfetch
с параметромcache: 'force-cache'
или обнаруженные до использования динамических функций. Эквивалентноrevalidate: Infinity
. Отдельные запросыfetch
могут использоватьcache: 'no-store'
илиrevalidate: 0
для динамического рендеринга.0
: Гарантирует динамический рендеринг даже без динамических функций или некэшированных запросов. Изменяет значениеcache
по умолчанию дляfetch
на'no-store'
, но сохраняет'force-cache'
или положительноеrevalidate
.number
: (в секундах) Устанавливает частоту ревалидации по умолчанию.
Важно знать: Параметр
revalidate
доступен только при использовании Node.js Runtime. Не работает сruntime = 'edge'
.
Частота ревалидации
- Наименьшее значение
revalidate
среди всех макетов и страниц маршрута определяет частоту ревалидации для всего маршрута. - Отдельные запросы
fetch
могут устанавливать меньшее значениеrevalidate
для увеличения частоты ревалидации.
fetchCache
Это расширенная настройка, которую следует использовать только при необходимости переопределить поведение по умолчанию.
По умолчанию Next.js кэширует запросы fetch()
, обнаруженные до использования динамических функций, и не кэширует запросы, обнаруженные после.
fetchCache
позволяет переопределить параметр cache
по умолчанию для всех запросов fetch
в макете или странице.
export const fetchCache = 'auto'
// 'auto' | 'default-cache' | 'only-cache'
// 'force-cache' | 'force-no-store' | 'default-no-store' | 'only-no-store'
export const fetchCache = 'auto'
// 'auto' | 'default-cache' | 'only-cache'
// 'force-cache' | 'force-no-store' | 'default-no-store' | 'only-no-store'
'auto'
(по умолчанию): Кэширует запросыfetch
до динамических функций с их параметрамиcache
и не кэширует запросы после динамических функций.'default-cache'
: Разрешает любой параметрcache
дляfetch
, но по умолчанию устанавливает'force-cache'
. Даже запросы после динамических функций считаются статическими.'only-cache'
: Гарантирует кэширование всех запросовfetch
, устанавливаяcache: 'force-cache'
по умолчанию и вызывая ошибку приcache: 'no-store'
.'force-cache'
: Устанавливаетcache: 'force-cache'
для всех запросовfetch
.'default-no-store'
: Разрешает любой параметрcache
дляfetch
, но по умолчанию устанавливает'no-store'
. Даже запросы до динамических функций считаются динамическими.'only-no-store'
: Гарантирует отсутствие кэширования для всех запросовfetch
, устанавливаяcache: 'no-store'
по умолчанию и вызывая ошибку приcache: 'force-cache'
.'force-no-store'
: Устанавливаетcache: 'no-store'
для всех запросовfetch
, заставляя перезапрашивать данные при каждом запросе.
Поведение между сегментами маршрута
- Параметры должны быть совместимы между всеми макетами и страницами маршрута.
- При конфликте
'only-cache'
и'force-cache'
приоритет у'force-cache'
. Аналогично для'only-no-store'
и'force-no-store'
. - Комбинации
'only-cache'
с'only-no-store'
или'force-cache'
с'force-no-store'
недопустимы. - Родительский макет не может использовать
'default-no-store'
, если дочерний использует'auto'
или'*-cache'
.
- При конфликте
- Рекомендуется оставлять общие родительские макеты с
'auto'
и настраивать параметры в дочерних сегментах.
runtime
export const runtime = 'nodejs'
// 'edge' | 'nodejs'
export const runtime = 'nodejs'
// 'edge' | 'nodejs'
nodejs
(по умолчанию)edge
Подробнее о средах выполнения Edge и Node.js.
preferredRegion
export const preferredRegion = 'auto'
// 'auto' | 'global' | 'home' | ['iad1', 'sfo1']
export const preferredRegion = 'auto'
// 'auto' | 'global' | 'home' | ['iad1', 'sfo1']
Поддержка preferredRegion
и доступные регионы зависят от платформы развертывания.
Важно знать:
- Если
preferredRegion
не указан, наследуется значение из ближайшего родительского макета.- Корневой макет по умолчанию использует все регионы.
maxDuration
В зависимости от платформы развертывания можно увеличить максимальное время выполнения функции. Этот параметр позволяет установить большее значение в пределах лимитов вашего тарифного плана.
Примечание: Требуется Next.js 13.4.10
или новее.
export const maxDuration = 5
export const maxDuration = 5
Важно знать:
- Если
maxDuration
не указан, значение по умолчанию зависит от платформы и тарифного плана.
generateStaticParams
Функция generateStaticParams
используется вместе с динамическими сегментами маршрута для определения списка параметров сегментов, которые будут сгенерированы статически во время сборки, а не по запросу.
Подробнее см. в справочнике API.