Dynamic Snapshots · Overview
¿SSG o SSR?
-
Si eliges SSG, obtienes un rendimiento brutal… pero cada cambio de contenido implica rebuilds, pipelines y esperas.
-
Si eliges SSR, ganas flexibilidad… pero pagas el precio en cada request: llamadas al API, latencia y dependencia de red.
¿Y si pudieras tener lo mejor de ambos mundos cambiando una sola línea de código?
Que tu sitio web vaya a toda velocidad (rendimiento cercano a SSG), y tener la flexibilidad de SSR.
Desarrolla contra la API. Despliega sobre memoria.
En desarrollo quieres comodidad, apuntas al API de Content Island y siempre ves contenido fresco, sin pasos extra.
En producción quieres velocidad y resiliencia, cada lectura debería resolverse desde memoria, sin una llamada de red por operación.
Y lo mejor lo puedes configurar cambiando sólo una línea de código (incluso lo puede controlar con una variable de entorno).
Dynamic Snapshots te da exactamente eso, sin cambiar tu forma de trabajar.
¿Cómo funciona?
Exportas todo el contenido de tu proyecto a un único JSON: el snapshot.
El cliente API puede leer desde ese snapshot con paridad total respecto al API en vivo:
- Mismos métodos
- Mismas respuestas
- Mismo comportamiento
Pero tirando del snapshot en memoria, sin tener que hacer llamadas a la API.
¿Qué aporta un Dynamic Snapshot?
Un snapshot tradicional se genera en build y se queda congelado.
Un Dynamic Snapshot va más allá:
- Se mantiene en la memoria del servidor
- Se actualiza automáticamente cuando publicas contenido
- No requiere reiniciar
- No requiere rebuild
- No dispara múltiples llamadas al API
El contenido se reemplaza de forma atómica, sin afectar a las peticiones en curso.
Resultado
- Rendimiento cercano a SSG
- Flexibilidad de SSR
- Sin llamadas al API en runtime
- Sin rebuilds
- Sin complejidad extra
La clave
Tu implementación no cambia, solo el origen de datos.
Esta abstracción permite desarrollar con contenido fresco desde la API sin cambios en tu código, y desplegar con contenido en memoria sin llamadas de red.
Durante el desarrollo:
import { createClient } from '@content-island/api-client';
export const client = createClient({ ... mode: "api",});En producción:
import { createClient } from '@content-island/api-client';
export const client = createClient({ ... mode: "snapshot",});El resto del código permanece igual.
Lo mejor de ambos mundos
En desarrollo tirar contra la API, en producción directamente de la memoria local.
Sigue leyendo las guías de implementación para ver cómo integrarlo en tu aplicación.