fetch
Next.js 扩展了 Web api 的 fetch() API,允许服务器上的每个请求设置自己的持久性缓存。
export default async function Page() {
// `force-cache` 是默认的参数,可以忽略
const staticData = await fetch(`https://...`, { cache: 'force-cache' })
// 这个请求不会被缓存
const dynamicData = await fetch(`https://...`, { cache: 'no-store' })
// 此请求会被缓存10秒
const revalidatedData = await fetch(`https://...`, {next: { revalidate: 10 }})
return <div>...</div>
}
fetch(url, options)
options.cache
fetch(`https://...`, { cache: 'force-cache' | 'no-store' })
force-cache
: (默认),强制缓存。no-store
: 不缓存。
options.next.revalidate
fetch(`https://...`, { next: { revalidate: false | 0 | number } })
设置资源的缓存生存期(以秒为单位)。
false
, 无限期缓存资源。0
, 防止资源被缓存。number
, (以秒为单位)指定资源的缓存生存期应为最多 n 秒。
options.next.tags
fetch(`https://...`, { next: { tags: ['collection'] } })
设置资源的缓存标签。可以使用 revalidateTag 重新验证数据。自定义标签的最大长度为 256 个字符。