https://nextjs.org/docs/app/building-your-application/caching
種類 | デフォルト on / off |
---|---|
1 . Request Memoization | on |
2 . Data Cache | off |
3 . Full Route Cache | on |
4 . Client-side Router Cache | off |
https://nextjs.org/docs/app/building-your-application/caching#opting-out
signalを使って opting out します
const { signal } = new AbortController()
fetch(url, { signal })
https://nextjs.org/docs/app/building-your-application/caching#opting-out-1
デフォルトで opting out されています
明示的に opting out するには { cache: 'no-store' }
を使って opting out します
let data = await fetch('https://api.vercel.app/blog', { cache: 'no-store' })
// v14以前同様、無期限キャッシュをopt-in
fetch(`https://...`, { cache: 'force-store' })
// fetch時に`next: { revalidate: 3600 }`を指定して有効期限を設定
fetch('https://...', { next: { revalidate: 3600 } })
cache と next: { revalidate: xxxx } は同時に指定できません。(同時指定した場合 revalidate が優先されます)
(ただし cache: 'no-store' を指定した場合はこちらが優先されます)
引用: https://zenn.dev/akfm/articles/nextjs-cache-default-update#data-cacheの無効化
https://nextjs.org/docs/app/building-your-application/caching#opting-out-2
3つの方法があります
・Dynamic API (cookieをset)を使用するルートでは opting out される
・export const dynamic = 'force-dynamic';
を記述している場合 opting out される
・キャッシュを持たない fetch 関数が使用されている場合 を記述している場合 opting out される
https://nextjs.org/docs/app/building-your-application/caching#opting-out-3
デフォルトで opting out されています