Configura el almacenamiento en caché del servidor en Next.js

La mayoría de las apps de Next.js en App Hosting pueden mantener los valores predeterminados normales de Next.js. Sin embargo, si tus instancias experimentan errores Memory limit exceeded, es posible que debas configurar experimental.isrFlushToDisk: false para mantener la caché en la memoria y evitar que las instancias se reinicien.

De forma predeterminada, Next.js almacena en caché las páginas y los datos que renderiza en el entorno de ejecución, como las páginas generadas con la regeneración estática incremental (ISR), las respuestas del controlador de rutas y los resultados de recuperación. Los mantiene en la memoria y también los escribe en archivos en el directorio .next de tu app. Next.js no quita estos archivos.

En App Hosting, tu app se ejecuta en Cloud Run, donde el sistema de archivos está en la memoria. Los archivos que se escriben en él se consideran en la memoria asignada para cada instancia de entrega (memoryMiB) hasta que se cierra la instancia. Si tu app renderiza muchas páginas distintas durante el tiempo de ejecución, por ejemplo, rutas dinámicas con parámetros que no se generan durante el tiempo de compilación, las instancias pueden superar su límite de memoria y reiniciarse. Luego, Cloud Run registra un error como Memory limit of 512 MiB exceeded with 515 MiB used. Consulta la documentación de Cloud Run sobre el acceso al sistema de archivos para obtener más detalles.

Mantén la caché en la memoria

Para evitar que Next.js escriba su caché en el sistema de archivos, establece experimental.isrFlushToDisk en false en tu archivo next.config.js:

// @ts-check

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

module.exports = nextConfig;

Luego, Next.js mantiene el contenido almacenado en caché solo en la memoria, hasta cacheMaxMemorySize (50 MB de forma predeterminada), y quita las entradas menos usadas recientemente cuando la caché está llena. Cada instancia de entrega tiene su propia caché, que se pierde cuando se reinicia la instancia.

Crea una confirmación que incluya estos cambios y envíala a tu rama activa. Luego, espera a que se complete el lanzamiento de App Hosting.