フロントエンド開発の先端を突っ走るNext.js
next.js アプリの初期化( npx create-next-app@latest <アプリ名> ) または yarn create next-app <アプリ名> または bun create next-app <アプリ名> )

Next.js Version 15 でのキャッシュ挙動のまとめ

● Next.js AppRouter には 4種類のキャッシュがある

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

● キャッシュを無効(opting out) 有効(opting in)にする

・1 . Request Memoization - opting out

https://nextjs.org/docs/app/building-your-application/caching#opting-out

signalを使って opting out します

const { signal } = new AbortController()
fetch(url, { signal })

・2 . Data Cache

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' })

Data Cacheをopting in するには

// v14以前同様、無期限キャッシュをopt-in
fetch(`https://...`, { cache: 'force-store' })

// fetch時に`next: { revalidate: 3600 }`を指定して有効期限を設定
fetch('https://...', { next: { revalidate: 3600 } })

cachenext: { revalidate: xxxx } は同時に指定できません。(同時指定した場合 revalidate が優先されます)
(ただし cache: 'no-store' を指定した場合はこちらが優先されます)

引用: https://zenn.dev/akfm/articles/nextjs-cache-default-update#data-cacheの無効化

・3 . Full Route Cache - opting out

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 される

・4 . Client-side Router Cache - opting out

https://nextjs.org/docs/app/building-your-application/caching#opting-out-3

デフォルトで opting out されています

No.2566
10/30 15:03

edit