A maioria dos apps Next.js no App Hosting pode manter os padrões normais do Next.js.
No entanto, se as instâncias encontrarem erros Memory limit exceeded, talvez seja necessário definir experimental.isrFlushToDisk: false para manter o cache na memória e evitar que as instâncias sejam reiniciadas.
Por padrão, o Next.js armazena em cache as páginas e os dados que renderiza no ambiente de execução, como
páginas geradas com a Regeneração Estática Incremental
(ISR, na sigla em inglês),
respostas do gerenciador de rotas e resultados de busca. Ele os mantém na memória e também
os grava em arquivos no diretório .next do app. O Next.js não remove
esses arquivos.
No App Hosting, o app é executado no Cloud Run, em que o sistema de arquivos
está na memória. Os arquivos gravados nele são contabilizados na alocação de memória para cada
instância de exibição
(memoryMiB) até que a instância seja
encerrada. Se o app renderizar muitas páginas distintas no ambiente de execução, por exemplo, rotas
dinâmicas com parâmetros que não são gerados no momento do build, as instâncias poderão exceder
o limite de memória e reiniciar. Em seguida, o Cloud Run registra um erro como
Memory limit of 512 MiB exceeded with 515 MiB used. Consulte a
documentação do Cloud Run sobre acesso ao sistema de
arquivos para
mais detalhes.
Manter o cache na memória
Para impedir que o Next.js grave o cache no sistema de arquivos, defina
experimental.isrFlushToDisk como false no arquivo
next.config.js:
// @ts-check
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
isrFlushToDisk: false,
},
};
module.exports = nextConfig;
O Next.js mantém o conteúdo em cache apenas na memória, até cacheMaxMemorySize
(padrão de 50 MB), e remove as entradas menos usadas recentemente quando o cache está
cheio. Cada instância de exibição tem o próprio cache, que é perdido quando a instância é reiniciada.
Crie um commit que inclua essas mudanças e envie-o para a ramificação ativa. Em seguida, aguarde a conclusão do lançamento do App Hosting.