Configurar o armazenamento em cache do servidor no Next.js

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.