Capítulo 100 de 456
'use cache' marca uma rota, componente React ou função como cacheável, guardando o output serializado com base nos inputs. Requer a flag cacheComponents: true em next.config.ts (feature de Cache Components).
deploymentId), Function ID (hash da localização/assinatura), argumentos serializáveis, e HMR refresh hash (dev only). Variáveis de outer scope capturadas por closure entram na key como se fossem argumentos.cacheLife(profile): define lifetime explícito do cache (ex. 'hours', 'max'); sem ela, usa o profile default (stale 5min client, revalidate 15min server, never expires).cacheTag(tag) + revalidateTag/updateTag: invalidação on-demand por tag, complementar ao revalidate por tempo.children, Server Actions) é permitido sem introspecção.cookies(), headers(), searchParams não podem ser lidos dentro do escopo 'use cache', nem por uma função auxiliar chamada de dentro dele; erro next-request-in-use-cache.cacheMaxMemorySize).'use cache' roda em escopo isolado do React.cache; valores setados fora não são visíveis dentro.export async function getData() {
'use cache'
const res = await fetch('https://api.example.com/data')
const data = await res.json()
return data
}
import { cacheLife, cacheTag } from 'next/cache'
async function getProducts() {
'use cache'
cacheLife('hours')
cacheTag('products')
const res = await fetch('https://api.example.com/products')
return res.json()
}
cacheLife) e tag para invalidação on-demand (cacheTag).| Environment | Runtime Caching Behavior |
|---|---|
| Serverless | Entradas normalmente não persistem entre requests (instância pode mudar); build-time caching funciona normal. |
| Self-hosted | Entradas persistem entre requests; controlar tamanho via cacheMaxMemorySize. |
| Deployment Option | Supported |
|---|---|
| Node.js server | Yes |
| Docker container | Yes |
| Static export | No |
| Adapters | Platform-specific |
cookies()/headers()/searchParams dentro de 'use cache': falha com erro next-request-in-use-cache; leia fora do escopo cacheado e passe como argumento.'use cache': causa hang de build (timeout de 50s) porque o cache tenta resolver dado que só existe em request-time; aguarde a Promise fora do escopo cacheado.React.cache para injetar dado num escopo 'use cache': não funciona, o escopo é isolado; use argumentos de função.use cache de vida curta dentro de um sem cacheLife explícito: falha o build no prerendering; sempre declare cacheLife explicitamente em cada escopo.cacheLife: aplica o profile default silenciosamente, tornando o comportamento de cache implícito no call site.async; placement decide o escopo do cache (função vs. componente vs. arquivo/rota inteira).cacheLife (revalidação por tempo) com cacheTag+revalidateTag/updateTag (revalidação sob demanda) — não são mutuamente exclusivos.'use cache' reexecuta a cada request sem persistir.unstable_cache ou fetch cache.NEXT_PRIVATE_DEBUG_CACHE=1 para logging verboso.'use cache' se encaixa entre as outras directives.