Настройка сегмента маршрута
Параметры сегмента маршрута позволяют настроить поведение страницы, макета или обработчика маршрута, напрямую экспортируя следующие переменные:
| Параметр | Тип | Значение по умолчанию |
|---|---|---|
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 |
Устанавливается платформой развертывания |
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'
Важно знать: Новая модель в каталоге
appотдает предпочтение гранулированному управлению кэшированием на уровне запросаfetchпо сравнению с бинарной моделью «все или ничего»getServerSidePropsиgetStaticPropsна уровне страницы в каталогеpages. Параметрdynamic— способ вернуться к предыдущей модели в удобном формате и предоставляет более простой путь миграции.
-
'auto'(по умолчанию): Параметр по умолчанию для кэширования по максимуму, не препятствуя компонентам выбора динамического поведения. -
'force-dynamic': Вынужденное динамическое отображение, что приведет к отображению маршрутов для каждого пользователя во время запроса. Этот параметр эквивалентенgetServerSideProps()в каталогеpages. -
'error': Вынужденное статическое отображение и кэширование данных макета или страницы, вызывая ошибку, если какие-либо компоненты используют динамические функции или некэшированные данные. Этот параметр эквивалентен:-
getStaticProps()в каталогеpages. - Установке параметра каждого запроса
fetch()в макете или странице на{ cache: 'force-cache' }. - Установке конфигурации сегмента на
fetchCache = 'only-cache', dynamicParams = false. -
dynamic = 'error'изменяет значение параметраdynamicParamsсtrueнаfalse. Вы можете вернуться к динамическому отображению страниц для динамических параметров, не сгенерированныхgenerateStaticParams, вручную установивdynamicParams = true.
-
-
'force-static': Вынужденное статическое отображение и кэширование данных макета или страницы, принудительно устанавливая значения куки, заголовков и параметров поиска в пустые значения.
Важно знать:
- Инструкции по миграции с
getServerSidePropsиgetStaticPropsнаdynamic: 'force-dynamic'иdynamic: 'error'можно найти в руководстве по обновлению.
dynamicParams
Управление тем, что происходит, когда посещается динамический сегмент, который не был сгенерирован с помощью generateStaticParams.
export const dynamicParams = true // true | false,
-
true(по умолчанию): Динамические сегменты, не включенные вgenerateStaticParams, генерируются по требованию. -
false: Динамические сегменты, не включенные вgenerateStaticParams, вернут 404.
Важно знать:
- Этот параметр заменяет параметр
fallback: true | false | blockingвgetStaticPathsкаталогеpages.- Если
dynamicParams = true, сегмент использует потоковое отображение на сервере.- Если
dynamic = 'error'иdynamic = 'force-static'используются, значение параметраdynamicParamsпо умолчанию изменится наfalse.
revalidate
Установка значения времени перевалидации по умолчанию для макета или страницы. Этот параметр не переопределяет значение revalidate установленное отдельными запросами fetch.
export const revalidate = false // false | 0 | number
-
false(по умолчанию): Эвристика по умолчанию для кэширования запросовfetchкоторые установили свой параметрcacheна'force-cache'или были обнаружены до использования динамической функции. Семантически эквивалентноrevalidate: Infinity, что фактически означает, что ресурс должен быть кэширован неограниченно. Все еще возможно, что отдельные запросыfetchмогут использоватьcache: 'no-store'илиrevalidate: 0для предотвращения кэширования и сделать маршрут динамически отображаемым. Или установитьrevalidateна положительное число, меньшее, чем значение по умолчанию маршрута, чтобы увеличить частоту перевалидации маршрута. -
0: Обеспечение того, что макет или страница всегда отображаются динамически, даже если не обнаружено динамических функций или некэшированных запросов данных. Этот параметр изменяет значение параметра по умолчанию для запросовfetchбез указанного параметраcacheна'no-store', но оставляет запросыfetchкоторые выбрали'force-cache'или используют положительное значениеrevalidateкак есть. -
number: (в секундах) Установите стандартную частоту перевалидации макета или страницы наnсекунд.
Важно знать: параметр
revalidateдоступен только при использовании Node.js Runtime. Это означает, что использованиеrevalidateсruntime = 'edge'не будет работать.
Частота перевалидации
- Самое низкое значение
revalidateпо всем макетам и страницам одного маршрута определит частоту перевалидации всего маршрута. Это гарантирует, что дочерние страницы будут перевалидированы так же часто, как и их родительские макеты. - Отдельные запросы
fetchмогут установить меньшее значениеrevalidateчем стандартное значение маршрутаrevalidate, чтобы увеличить частоту перевалидации всего маршрута. Это позволяет динамически увеличивать частоту перевалидации для определенных маршрутов в зависимости от некоторых критериев.
fetchCache
Это расширенный параметр, который следует использовать только в случае необходимости переопределения стандартного поведения.
По умолчанию Next.js будет кэшировать любые fetch() запросы, доступные до использования любых динамических функций, и не будет кэшировать fetch запросы, обнаруженные после использования динамических функций.
fetchCache позволяет переопределить параметр по умолчанию cache для всех fetch запросов в макете или странице.
export const fetchCache = 'auto' // 'auto' | 'default-cache' | 'only-cache' // 'force-cache' | 'force-no-store' | 'default-no-store' | 'only-no-store'
-
'auto'(по умолчанию): Стандартный параметр для кэшированияfetchзапросов до динамических функций с параметромcache, который они предоставляют, и не кэшированияfetchзапросов после динамических функций. -
'default-cache': Разрешить передачу любого параметраcacheвfetch, но если параметр не указан, установить параметрcacheв'force-cache'. Это означает, что дажеfetchзапросы после динамических функций считаются статическими. -
'only-cache': Обеспечить включение всехfetchзапросов в кэширование, изменив значение по умолчанию наcache: 'force-cache', если параметр не указан, и вызвав ошибку, если любыеfetchзапросы используютcache: 'no-store'. -
'force-cache': Обеспечить включение всехfetchзапросов в кэширование, установив параметрcacheвсехfetchзапросов в'force-cache'. -
'default-no-store': Разрешить передачу любого параметраcacheвfetch, но если параметр не указан, установить параметрcacheв'no-store'. Это означает, что дажеfetchзапросы до динамических функций считаются динамическими. -
'only-no-store': Обеспечить отключение всехfetchзапросов от кэширования, изменив значение по умолчанию наcache: 'no-store', если параметр не указан, и вызвав ошибку, если любыеfetchзапросы используютcache: 'force-cache' -
'force-no-store': Обеспечить отключение всехfetchзапросов от кэширования, установив параметрcacheвсехfetchзапросов в'no-store'. Это принудительно перевыполняет всеfetchзапросы при каждом запросе, даже если они предоставляют параметр'force-cache'.
Поведение при пересечении сегментов маршрута
- Все параметры, установленные для каждого макета и страницы одного маршрута, должны быть совместимы друг с другом.
- Если указаны как
'only-cache', так и'force-cache', то'force-cache'имеет преимущество. Если указаны как'only-no-store', так и'force-no-store', то'force-no-store'имеет преимущество. Параметр force изменяет поведение по всему маршруту, поэтому один сегмент с'force-*'предотвратит любые ошибки, вызванные'only-*'. - Цель параметров
'only-*'иforce-*'- гарантировать, что весь маршрут является либо полностью статическим, либо полностью динамическим. Это означает:- Комбинация
'only-cache'и'only-no-store'в одном маршруте запрещена. - Комбинация
'force-cache'и'force-no-store'в одном маршруте запрещена.
- Комбинация
- Родительский элемент не может указывать
'default-no-store', если дочерний элемент указывает'auto'или'*-cache', так как это может привести к различным результатам одного и того же запроса.
- Если указаны как
- Рекомендуется оставлять общие родительские макеты как
'auto'и настраивать параметры там, где дочерние сегменты отличаются.
runtime
export const runtime = 'nodejs' // 'nodejs' | 'edge'
-
'nodejs'(по умолчанию) 'edge'
Дополнительную информацию о Edge и Node.js runtime.
preferredRegion
export const preferredRegion = 'auto' // 'auto' | 'global' | 'home' | ['iad1', 'sfo1']
Поддержка preferredRegion, и поддерживаемые регионы, зависят от вашей платформы развертывания.
Важно знать:
- Если
preferredRegionне указан, он наследует параметр ближайшего родительского макета.- Корневой макет по умолчанию использует регионы
all.
maxDuration
По умолчанию Next.js не ограничивает выполнение серверной логики (рендеринг страницы или обработка API). Платформы развертывания могут использовать maxDuration из выходных данных сборки Next.js для добавления конкретных ограничений времени выполнения. Например, на Vercel.
Примечание: Этот параметр требует Next.js 13.4.10 или выше.
export const maxDuration = 5
Важно знать:
- При использовании Server Actions, установите
maxDurationна уровне страницы, чтобы изменить значение по умолчанию для таймаута всех Server Actions, используемых на странице.
generateStaticParams
Функция generateStaticParams может использоваться в сочетании с динамическими сегментами маршрута для определения списка параметров сегментов маршрута, которые будут статически сгенерированы во время сборки, а не по требованию во время запроса.
Дополнительные сведения см. в справочнике API.
© 2024 Vercel, Inc.
Licensed under the MIT License.
https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config