Configura la memorizzazione nella cache del server su Next.js

La maggior parte delle app Next.js su App Hosting può mantenere le impostazioni predefinite di Next.js. Tuttavia, se le istanze riscontrano errori Memory limit exceeded, potresti dover impostare experimental.isrFlushToDisk: false per mantenere la cache in memoria ed evitare il riavvio delle istanze.

Per impostazione predefinita, Next.js memorizza nella cache le pagine e i dati di cui esegue il rendering in fase di runtime, ad esempio le pagine generate con la rigenerazione statica incrementale (ISR), le risposte del gestore delle route e i risultati di recupero. Le conserva in memoria e le scrive anche nei file della directory .next della tua app. Next.js non rimuove questi file.

Su App Hosting, la tua app viene eseguita su Cloud Run, dove il file system è in memoria. I file scritti in questa directory vengono conteggiati ai fini dell'allocazione della memoria per ogni istanza di gestione (memoryMiB) finché l'istanza non viene arrestata. Se l'app esegue il rendering di molte pagine distinte in fase di runtime, ad esempio route dinamiche con parametri che non vengono generati in fase di build, le istanze possono superare il limite di memoria e riavviarsi. Cloud Run registra quindi un errore come Memory limit of 512 MiB exceeded with 515 MiB used. Per maggiori dettagli, consulta la documentazione di Cloud Run sull'accesso al file system.

Mantieni la cache in memoria

Per impedire a Next.js di scrivere la cache nel file system, imposta experimental.isrFlushToDisk su false nel file next.config.js:

// @ts-check

/** @type {import('next').NextConfig} */
const nextConfig = {
  experimental: {
    isrFlushToDisk: false,
  },
};

module.exports = nextConfig;

Next.js conserva quindi i contenuti memorizzati nella cache solo in memoria, fino a cacheMaxMemorySize (50 MB per impostazione predefinita), e rimuove le voci utilizzate meno di recente quando la cache è piena. Ogni istanza di gestione ha la propria cache, che viene persa quando l'istanza viene riavviata.

Crea un commit che includa queste modifiche ed eseguine il push nel branch attivo. Poi, attendi il completamento dell'implementazione di App Hosting.