Saltearse al contenido

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.

Diagrama del patrón Dynamic Snapshots: el snapshotLoader lee el snapshot desde un origen y refreshSnapshot() cambia el snapshot activo en memoria de forma atómica

¿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.