cacheLife

Опция cacheLife позволяет определять пользовательские профили кэширования при использовании функции cacheLife внутри компонентов или функций, а также в области действия директивы use cache.

Использование

Чтобы определить профиль, включите флаг dynamicIO и добавьте профиль кэширования в объект cacheLife файла next.config.js. Например, профиль blog:

import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  experimental: {
    dynamicIO: true,
    cacheLife: {
      blog: {
        stale: 3600, // 1 час
        revalidate: 900, // 15 минут
        expire: 86400, // 1 день
      },
    },
  },
}

export default nextConfig
module.exports = {
  experimental: {
    dynamicIO: true,
    cacheLife: {
      blog: {
        stale: 3600, // 1 час
        revalidate: 900, // 15 минут
        expire: 86400, // 1 день
      },
    },
  },
}

Теперь вы можете использовать эту пользовательскую конфигурацию blog в вашем компоненте или функции следующим образом:

import { unstable_cacheLife as cacheLife } from 'next/cache'

export async function getCachedData() {
  'use cache'
  cacheLife('blog')
  const data = await fetch('/api/data')
  return data
}
import { unstable_cacheLife as cacheLife } from 'next/cache'

export async function getCachedData() {
  'use cache'
  cacheLife('blog')
  const data = await fetch('/api/data')
  return data
}

Справочник

Объект конфигурации содержит следующие ключевые значения:

СвойствоЗначениеОписаниеТребования
stalenumberВремя, в течение которого клиент должен кэшировать значение без проверки сервера.Необязательно
revalidatenumberЧастота обновления кэша на сервере; устаревшие значения могут возвращаться во время обновления.Необязательно
expirenumberМаксимальное время, в течение которого значение может оставаться устаревшим перед переходом к динамическому режиму.Необязательно - должно быть больше revalidate