Ir al contenido
angel.library

Caché, CDN, compresión y estrategia de red

Una CDN (Content Delivery Network o red de distribución de contenido) mantiene copias cerca de las personas y absorbe parte del tráfico del origen. Solo ayuda cuando la respuesta se puede almacenar y la clave de caché representa correctamente sus variantes.

Los assets generados suelen incluir un hash de contenido:

HTTP/1.1 200 OK
Cache-Control: public, max-age=31536000, immutable
Content-Encoding: br

Si cambia el archivo, cambia la URL. Esto permite una caché larga sin invalidación manual. El HTML, en cambio, normalmente necesita revalidación o un TTL corto porque apunta a los hashes nuevos.

Cache-Control: public, max-age=0, must-revalidate
ETag: "home-v18"

Una respuesta puede variar por host, ruta, query, idioma, dispositivo o autorización. Agregar toda cookie a la clave destruye el hit rate; ignorar una cookie de identidad puede filtrar datos. Define explícitamente qué respuestas son públicas, privadas o no almacenables.

Vary: Accept-Encoding distingue compresión. Vary: Accept-Language puede ser correcto, pero las URLs por idioma suelen ser más observables y cacheables.

Cache-Control: public, max-age=60, s-maxage=300

Estas son tres políticas alternativas, no tres encabezados para pegar en una misma respuesta:

Cache-Control: private, max-age=60
Cache-Control: no-store

public permite cachés compartidas; private limita al navegador; no-store evita almacenamiento deliberado. Una respuesta personalizada nunca debe entrar en caché compartida sin una clave que represente identidad y autorización correctamente.

s-maxage puede definir frescura para CDN distinta del navegador. Documenta quién invalida y qué ocurre durante una caída del origen.

  • Brotli suele comprimir bien texto estático sobre HTTPS.
  • Gzip conserva compatibilidad amplia.
  • Imágenes AVIF, WebP, JPEG y video ya están comprimidos; recomprimirlos como HTTP aporta poco.
  • Comprime en build o en el edge para no gastar CPU por solicitud.

Elige entre invalidar, versionar o aceptar un periodo de obsolescencia. stale-while-revalidate permite servir una copia anterior mientras se actualiza, adecuado para contenido tolerante a segundos o minutos de retraso.

Con ETag o Last-Modified, el cliente envía If-None-Match o If-Modified-Since. Si no cambió, el servidor responde 304 Not Modified sin body. Esto ahorra transferencia, aunque todavía existe un viaje de red.

HTML: TTL corto + revalidación
JS/CSS con hash: un año + immutable
imagen pública versionada: caché larga
dashboard personal: private/no-store según sensibilidad
API de catálogo: CDN + clave por idioma + invalidación

Observa hit ratio, transferencia evitada, TTFB por región, errores del origen e invalidaciones. Una CDN puede ocultar un origen lento hasta que la caché falla; monitorea ambos caminos.

Prueba HIT, MISS, STALE y PURGE. Una tasa alta de hit no es éxito si se sirve contenido incorrecto o si una sola clave caliente concentra riesgo.