Spec-Zone.ru › Next.js

Настройка сегмента маршрута

Параметры сегмента маршрута позволяют настроить поведение страницы, макета или обработчика маршрута, напрямую экспортируя следующие переменные:

Параметр Тип Значение по умолчанию
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API