Capítulo 159 de 456
Next.js estende a Web fetch() API para permitir que cada requisição server-side defina sua própria semântica de cache persistente e revalidação, integrando fetch diretamente ao sistema de cache do framework.
options.cache: controla como a requisição interage com o cache persistente do Next.js (diferente do HTTP cache do browser).auto no cache (default): busca do servidor remoto a cada request em dev; em next build busca uma vez porque a rota é prerenderizada estaticamente; se Request-time APIs forem detectadas, busca a cada request.no-store: sempre busca do servidor remoto, mesmo sem Request-time APIs na rota.force-cache: procura por match no cache server-side (URL + method + headers + body); se fresco, retorna do cache; senão busca e atualiza (só respostas 200 são armazenadas).options.next.revalidate: define tempo de vida em segundos (false = indefinido, 0 = sem cache, number = segundos).options.next.tags: define tags de cache para revalidação sob demanda via revalidateTag (máx. 128 tags, 256 caracteres cada).GET com mesma URL/opções é memoizado automaticamente durante um único server render pass (não vale para Route Handlers, que ficam fora da árvore React).export default async function Page() {
let data = await fetch('https://api.vercel.app/blog')
let posts = await data.json()
return (
<ul>
{posts.map((post) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
)
}
async/await.fetch(`https://...`, { next: { revalidate: 3600, tags: ['collection'] } })
revalidateTag.const { signal } = new AbortController()
fetch(url, { signal })
AbortController signal.revalidate com cache: 'no-store': opções conflitantes; ambas são ignoradas e um warning é impresso em dev.auto no cache/no-store sob HMR: o HMR cache do Next.js intercepta essas respostas entre refreshes; limpa só em navegação ou reload completo.revalidate menor que o padrão da rota, o intervalo de revalidação de toda a rota diminui.revalidate prevalece.cache-control: no-cache (típico de hard refresh) ignora cache, next.revalidate e next.tags, servindo direto da fonte.use cache, com granularidade e perfis mais ricos que fetch puro.next.tags.