CDN explicada: qué hace una red de distribución de contenido | We.Inc
Cómo una CDN copia tus archivos en servidores edge cerca de los visitantes, qué significan un cache hit y un cache miss, y qué cabeceras Cache-Control deciden lo que puede guardar el edge.
Una red de distribución de contenido es un conjunto de servidores repartidos por el mundo que guardan copias de los archivos de tu sitio. A los visitantes les responde un servidor edge cercano en lugar de tu origen, así que las páginas cargan con menos espera y tu propio servidor atiende muchas menos peticiones. Las cabeceras Cache-Control deciden qué puede guardar el edge.
Los términos de una CDN en una línea cada uno
Término
Significado
Origen
Tu propio servidor o almacenamiento, donde están los archivos reales
Edge
Un servidor de la CDN cercano al visitante que responde en nombre del origen
Cache hit
El edge ya tenía una copia válida y respondió sin preguntar al origen
Cache miss
El edge no tenía nada utilizable, lo pidió al origen y quizá lo guardó
Purga
Indicar a la CDN que descarte las copias guardadas para que la siguiente petición obtenga las nuevas
En internet, la distancia cuesta tiempo: cada conexión nueva necesita varios viajes de ida y vuelta antes de que llegue el primer byte. Una CDN acorta esos viajes respondiendo desde algún lugar cercano al lector. Esta guía explica cómo funciona, qué no puede hacer y cómo la controlan tus cabeceras, con un simulador que puedes probar.
Elige directivas Cache-Control en el simulador para ver si un navegador y un edge de la CDN pueden guardar la respuesta, y durante cuánto tiempo.
Copia la línea de cabecera resultante para tu servidor o la configuración de tu hosting.
Consulta la tabla de referencia para elegir valores razonables para el HTML, los recursos con hash y las páginas privadas.
Después de un despliegue, purga la CDN o confía en nombres de archivo nuevos para que los visitantes reciban la actualización.
Pon un hash del contenido en los nombres de archivo, como app.3f9a1c.js, y guárdalos en caché un año con immutable. Un build nuevo produce nombres nuevos, así que no se sirve nada desactualizado.
Mantén el HTML con una vida compartida corta o revalídalo, porque su URL nunca cambia entre versiones.
Nunca dejes que una CDN guarde páginas que muestran los datos de la cuenta de una persona. Márcalas como private o no-store.
Cargar una librería desde una CDN pública ya no ahorra una descarga repetida: los navegadores ahora separan su caché por sitio por motivos de privacidad.
Preguntas frecuentes
¿Una CDN hace más rápido cualquier sitio?
Normalmente sí, para los visitantes lejos de tu servidor, porque los viajes de ida y vuelta son más cortos y las conexiones se establecen cerca. Puede añadir coste cuando introduce un dominio extra que hay que resolver y al que hay que conectarse, por eso es mejor servirlo todo desde tu propio dominio a través de la CDN que mezclar hosts.
¿Qué es s-maxage?
Una directiva Cache-Control que fija la vida útil solo para cachés compartidas como las CDN. Sustituye a max-age en el edge mientras los navegadores siguen usando max-age, así que puedes dejar que el edge guarde una página una hora y el navegador un minuto.
¿Puede una CDN cachear páginas dinámicas?
Sí, si la respuesta es la misma para todos. Incluso unos segundos de caché pueden absorber un pico de tráfico. Las respuestas que cambian según el usuario con sesión iniciada no deben guardarse en una caché compartida.
¿Una CDN es un riesgo de seguridad?
Es otro participante en el camino de tu contenido. Si cargas scripts desde una CDN de terceros, añade un hash de Subresource Integrity para que el navegador rechace un archivo que haya sido alterado.
¿Tengo que añadir una CDN yo mismo?
Muchas plataformas de hosting ya sirven los sitios publicados a través de una CDN. Lee la documentación de tu hosting antes de poner una segunda encima, porque dos capas de caché complican las purgas y la depuración.
Qué ocurre en una petición
El resolver del visitante devuelve la dirección de un edge cercano. El edge busca la URL en su almacén. Si hay un hit, responde al momento; si hay un miss, pregunta a tu origen, reenvía la respuesta y guarda una copia si las cabeceras lo permiten.
Los edges también mantienen conexiones abiertas con el origen, así que incluso un miss suele ser más rápido que un visitante conectándose a tu servidor desde la otra punta del mundo.
Lo que una CDN no puede arreglar
Las consultas lentas a la base de datos, el JavaScript pesado y las imágenes demasiado grandes siguen siendo lentos aunque se sirvan desde un edge. Una CDN elimina distancia, no trabajo.
También añade una pieza más que puede fallar. Si la CDN sufre una caída, todos los sitios que dependen de ella se ven afectados, así que conviene tener páginas de estado y un plan para ese caso.
Directivas Cache-Control que importan en el edge
Qué indica cada directiva a los navegadores y a las CDN
Directiva
Navegador
Edge de la CDN
max-age=N
Válido durante N segundos
Válido durante N segundos salvo que haya s-maxage
s-maxage=N
Se ignora
Válido durante N segundos, sustituyendo a max-age
Puede guardarlo
Puede guardarlo, incluso con una cabecera Authorization
Puede guardarlo
No debe guardarlo
No debe guardarlo
No debe guardarlo
No revalida mientras sea válido
No revalida mientras sea válido
stale-while-revalidate=N
Puede servir contenido caducado durante N segundos mientras lo actualiza
Igual, si la CDN lo admite
Recetas de cabeceras por tipo de archivo
Tres políticas habituales
Los recursos con hash duran un año, el HTML se actualiza en el edge cada minuto y las páginas de cuenta nunca pasan por una caché compartida.
Simulador de Cache-Control
Elige directivas y mira quién puede guardar la respuesta.
max-age (segundos)
s-maxage (segundos, en blanco si no hay)
Compartición
Public, private o no-store
Añadir immutable
Navegador
Edge de la CDN
Puede guardarlo, válido durante {n} segundos
No debe guardarlo
Puede guardarlo, pero debe consultar al servidor antes de reutilizarlo