Cómo implementar Regeneración Estática Incremental (ISR)
La Regeneración Estática Incremental (ISR) permite:
- Actualizar contenido estático sin reconstruir todo el sitio
- Reducir la carga del servidor sirviendo páginas estáticas prerrenderizadas para la mayoría de solicitudes
- Asegurar que los encabezados
cache-control
adecuados se añadan automáticamente a las páginas - Manejar grandes cantidades de páginas de contenido sin tiempos largos de
next build
Aquí un ejemplo mínimo:
Así funciona este ejemplo:
- Durante
next build
, se generan todas las entradas de blog conocidas (hay 25 en este ejemplo) - Todas las solicitudes a estas páginas (ej.
/blog/1
) se almacenan en caché y son instantáneas - Después de 60 segundos, la siguiente solicitud mostrará la página en caché (obsoleta)
- La caché se invalida y comienza a generarse una nueva versión de la página en segundo plano
- Una vez generada con éxito, Next.js mostrará y almacenará en caché la página actualizada
- Si se solicita
/blog/26
, Next.js generará y almacenará esta página bajo demanda
Referencia
Funciones
Ejemplos
Validación bajo demanda con res.revalidate()
Para un método más preciso de revalidación, use res.revalidate
para generar una nueva página bajo demanda desde un Enrutador API.
Por ejemplo, esta Ruta API puede llamarse en /api/revalidate?secret=<token>
para revalidar una entrada de blog. Cree un token secreto solo conocido por su app Next.js. Este secreto evitará acceso no autorizado a la Ruta API de revalidación.
Si usa revalidación bajo demanda, no necesita especificar un tiempo revalidate
en getStaticProps
. Next.js usará el valor por defecto false
(sin revalidación) y solo revalidará la página bajo demanda cuando se llame a res.revalidate()
.
Manejo de excepciones no capturadas
Si hay un error dentro de getStaticProps
durante regeneración en segundo plano, o lanza un error manualmente, se seguirá mostrando la última página generada exitosamente. En la siguiente solicitud, Next.js reintentará llamar a getStaticProps
.
Personalizando la ubicación de la caché
Puede configurar la ubicación de la caché de Next.js si desea persistir páginas y datos en almacenamiento duradero, o compartir la caché entre múltiples contenedores o instancias de su aplicación. Más información.
Solución de problemas
Depuración de datos en caché en desarrollo local
Si usa la API fetch
, puede añadir registro adicional para entender qué solicitudes están en caché o no. Más sobre la opción logging
.
Verificar el comportamiento correcto en producción
Para verificar que sus páginas se almacenan en caché y se revalidan correctamente en producción, puede probar localmente ejecutando next build
y luego next start
para ejecutar el servidor de producción de Next.js.
Esto le permitirá probar el comportamiento de ISR (Regeneración Incremental Estática) como funcionaría en un entorno de producción. Para depuración adicional, agregue la siguiente variable de entorno a su archivo .env
:
Esto hará que el servidor de Next.js registre en la consola los aciertos y fallos de la caché ISR. Puede inspeccionar la salida para ver qué páginas se generan durante next build
, así como cómo se actualizan las páginas cuando se accede a las rutas bajo demanda.
Consideraciones
- ISR solo es compatible cuando se utiliza el entorno de ejecución Node.js (predeterminado).
- ISR no es compatible al crear una Exportación Estática.
- El Middleware no se ejecutará para solicitudes ISR bajo demanda, lo que significa que cualquier reescritura de ruta o lógica en el Middleware no se aplicará. Asegúrese de revalidar la ruta exacta. Por ejemplo,
/post/1
en lugar de una reescritura/post-1
.
Compatibilidad con plataformas
Opción de despliegue | Compatible |
---|---|
Servidor Node.js | Sí |
Contenedor Docker | Sí |
Exportación estática | No |
Adaptadores | Depende de la plataforma |
Aprenda cómo configurar ISR al alojar Next.js usted mismo.
Historial de versiones
Versión | Cambios |
---|---|
v14.1.0 | El cacheHandler personalizado es estable. |
v13.0.0 | Se introduce el App Router. |
v12.2.0 | Pages Router: ISR bajo demanda es estable |
v12.0.0 | Pages Router: Se añade ISR con detección de bots. |
v9.5.0 | Pages Router: Se introduce ISR estable. |