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.
Archivos inmutables
Sección titulada «Archivos inmutables»Los assets generados suelen incluir un hash de contenido:
HTTP/1.1 200 OKCache-Control: public, max-age=31536000, immutableContent-Encoding: brSi 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-revalidateETag: "home-v18"Clave de caché
Sección titulada «Clave de caché»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.
Público, privado y no almacenar
Sección titulada «Público, privado y no almacenar»Cache-Control: public, max-age=60, s-maxage=300Estas son tres políticas alternativas, no tres encabezados para pegar en una misma respuesta:
Cache-Control: private, max-age=60Cache-Control: no-storepublic 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.
Compresión
Sección titulada «Compresión»- 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.
Evitar contenido obsoleto
Sección titulada «Evitar contenido obsoleto»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.
Revalidación condicional
Sección titulada «Revalidación condicional»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.
Caso de uso
Sección titulada «Caso de uso»HTML: TTL corto + revalidaciónJS/CSS con hash: un año + immutableimagen pública versionada: caché largadashboard personal: private/no-store según sensibilidadAPI de catálogo: CDN + clave por idioma + invalidaciónObserva 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.