¿Tu sitio necesita una CDN? Cuándo vale la pena

Un sitio pequeño necesita una CDN cuando tiene visitantes lejos del servidor o sirve imágenes, CSS y JavaScript pesados. Si todo el público está cerca del origen y la página es liviana, la ganancia es pequeña.

Actualizado el 6 min de lectura

Objetivos de aprendizaje

Después de leer este artículo podrás:

  • Decidir si tu sitio gana con una CDN usando criterios medibles
  • Comparar las opciones: CDN del hosting, CDN de terceros y ninguna
  • Configurar Cache-Control y confirmar con curl que la caché funciona
En esta página

En teoría, toda página se vuelve más rápida con una CDN. En la práctica, la ganancia va de enorme a imperceptible, y depende de tres cosas: dónde están tus visitantes, cuánto pesa la página y si el contenido cambia en cada solicitud.

Los criterios de abajo te ayudan a decidir con números, no por moda. Si todavía no sabes qué es una CDN, empieza por qué es una CDN y cómo acelera tu sitio y vuelve aquí.

¿El público estálejos del origen?visitantes en otras regiones¿La página tiene muchosarchivos estáticos?imágenes, CSS, JS, fuentesUsa CDNcon cachéCDN opcionalsi ya viene incluida,déjala activadasínosíno
Un público lejano o una página cargada de estáticos piden CDN con caché; un público local y una página ligera ganan poco.

¿Qué criterios deciden si vale la pena?#

Hazte cuatro preguntas, en este orden:

  1. ¿Dónde está el público? Si el servidor está en una región y los visitantes en otras, cada solicitud recorre una distancia grande. Si todos viven en la misma ciudad que el servidor, casi no hay latencia que ahorrar.
  2. ¿Cuánto pesa la página? Una página con 40 archivos paga el costo de la distancia varias veces. Una página de texto con un CSS pequeño paga poco.
  3. ¿El contenido es igual para todos? Imágenes, CSS, JavaScript, fuentes y sitios estáticos son excelentes candidatos para la caché. Los paneles y las respuestas por usuario no lo son.
  4. ¿El tráfico tiene picos? La CDN responde en lugar del origen, así que un pico de visitas (una publicación viral, un lanzamiento) presiona menos al servidor.

Para medir en lugar de suponer, usa dos métricas de Google. El TTFB (tiempo hasta el primer byte) se considera bueno hasta 0,8 s y malo por encima de 1,8 s. El LCP (tiempo hasta que aparece el elemento más grande de la página) es bueno hasta 2,5 s y malo por encima de 4 s, medido en el percentil 75 de las visitas, separando móvil y escritorio. Si el TTFB de visitantes lejanos pasa de 0,8 s o el LCP pasa de 2,5 s por culpa de imágenes y scripts, una CDN con caché tiende a ayudar.

¿En qué casos la CDN marca la diferencia?#

  • Público disperso: un sitio mexicano con visitantes en España y en Estados Unidos.
  • Muchas imágenes o videos: el archivo sale del PoP (punto de presencia) más cercano, no del origen.
  • Sitio estático o generado (SSG): como el HTML también es igual para todos, la CDN puede servir casi todo sin tocar el origen.
  • Servidor pequeño: si el origen tiene poca RAM, dejar que la CDN absorba las solicitudes repetidas evita que se caiga en los picos.
  • Protección extra: las CDN suelen incluir mitigación de DDoS y WAF, y ocultan la dirección del origen.

¿En qué casos puedes prescindir de ella?#

  • Público local y página liviana: el blog de un barrio, el sitio de una clínica, un portafolio con pocos archivos. El tiempo ya es bajo.
  • Aplicación totalmente dinámica y autenticada: un panel en el que cada respuesta depende del usuario casi no usa la caché.
  • Entorno interno: una herramienta que usa un equipo dentro de la misma red.

Incluso en estos casos, si el hosting ya incluye CDN, déjala activada: solo actúa donde hay caché válida.

¿Cuáles son las opciones?#

Opción Cómo funciona Pros Contras
Ninguna Todo viene del origen Simple, nada que configurar Lento para quien está lejos, el origen recibe todo el tráfico
CDN del propio hosting El hosting ya pone la CDN delante de la aplicación Sin configuración extra, sin cobro aparte en muchos casos Usas los controles que ofrece
CDN de terceros delante del sitio Apuntas el DNS del dominio al proveedor de la CDN Más control de las reglas de caché, existen planes sin cuota mensual (el plan Free de Cloudflare, por ejemplo, incluye CDN) Una pieza más que configurar y depurar, límites que cambian
CDN solo para archivos Las imágenes y videos van a un almacenamiento de objetos con CDN, el sitio queda en el origen Resuelve lo que más pesa Dos URL que administrar

No hay un ganador universal. La pregunta correcta es cuál de ellas resuelve tu cuello de botella con la menor complejidad.

¿Qué guarda la CDN por defecto?#

Depende del proveedor. Como ejemplo, Cloudflare guarda en caché según la extensión del archivo, no según el tipo de contenido, y la lista por defecto cubre imágenes (JPG, PNG, WEBP, SVG), CSS, JS, fuentes (WOFF2, TTF), audio, video y archivos comprimidos. Según la documentación, HTML y JSON no se guardan en caché por defecto: para guardarlos creas una regla de caché.

Eso explica un error común: el sitio "tiene CDN", pero la página principal y la API nunca salen de la caché. Para saber qué pasó, el encabezado cf-cache-status de Cloudflare muestra HIT (vino de la caché), MISS (era elegible, pero lo buscó en el origen), DYNAMIC (no elegible) o BYPASS (era elegible, pero la respuesta del origen no podía guardarse). Otras CDN usan otros nombres de encabezado.

¿Cómo configurar la caché de un sitio pequeño?#

Quien decide el tiempo de caché es el Cache-Control de tu aplicación. Los archivos con hash en el nombre cambian de URL cuando cambia su contenido, así que pueden quedarse guardados un año. En Node.js con Express:

js
import express from "express";

const app = express();

// /assets/app.3f9a1c.js, /assets/logo.8d2e.png: el nombre cambia cuando cambia el archivo
app.use(
  "/assets",
  express.static("public/assets", { maxAge: "1y", immutable: true }),
);

// HTML: el navegador lo guarda 1 minuto; la CDN puede guardarlo 5 minutos
app.get("/", (req, res) => {
  res.set("Cache-Control", "public, max-age=60, s-maxage=300");
  res.sendFile("index.html", { root: "public" });
});

// Respuesta por usuario: nunca en una caché compartida
app.get("/panel", (req, res) => {
  res.set("Cache-Control", "private, no-store");
  res.send("Panel del usuario");
});

app.listen(process.env.PORT ?? 80);

s-maxage vale solo para cachés compartidas, como la CDN, y tiene prioridad sobre max-age en ellas. Recuerda que, en Cloudflare, el HTML solo entra en la caché con una regla de caché. private impide que la CDN guarde la respuesta, y no-store prohíbe cualquier caché, según MDN. Detalles de cada directiva en qué es Cache-Control.

¿Cómo confirmar que la caché funciona?#

Ejecuta esto dos veces y compara:

bash
curl -sI https://www.ejemplo.com/assets/app.3f9a1c.js

En la segunda llamada, busca el encabezado Age con un valor mayor que cero y el indicador de HIT de tu proveedor. Si la respuesta nunca viene de la caché, revisa el Cache-Control y confirma que no haya Set-Cookie en la respuesta, porque Cloudflare no guarda respuestas con Set-Cookie (el estado puede aparecer como BYPASS).

¿Qué opción elegir en cada escenario?#

  • Blog o portafolio local, pocas páginas: la CDN es opcional. Si el hosting ya la tiene, aprovéchala; si no, optimiza primero las imágenes (mira cómo hacer tu sitio web más rápido).
  • Landing page o tienda con público en todo el país: usa CDN con caché de assets y de HTML estático.
  • Sitio con visitantes en varios continentes: una CDN con caché es casi obligatoria.
  • Aplicación autenticada (SaaS, panel): usa CDN para los assets y deja las rutas por usuario con private o no-store.
  • Muchos videos o descargas: pon los archivos en un almacenamiento de objetos con CDN en lugar de servirlos desde la aplicación.

Cómo hacerlo en Square Cloud#

Todo plan de Square Cloud incluye CDN global, tráfico ilimitado (sin cobro por ancho de banda ni por solicitud, sujeto a la política de uso justo), TLS automático, WAF y protección DDoS L3/L4/L7. Para un sitio pequeño, eso evita contratar y configurar una CDN aparte.

La red es una CDN Anycast basada en Cloudflare, con más de 200 puntos de presencia, HTTP/3 y WebSockets. Tu aplicación web recibe un subdominio *.squareweb.app con HTTPS, y desde el plan Standard puedes usar un dominio personalizado, creando en tu registrador los registros DNS que muestra el panel. El dominio sigue registrado a tu nombre.

La CDN guarda en caché según el Cache-Control que envía tu aplicación, así que enviar los encabezados correctos, como en el ejemplo de arriba, sigue siendo tarea de tu aplicación. Los detalles están en Red y CDN de Square Cloud.

Red

Dominio propio, TLS automático y CDN global para tu app

Más información

Preguntas frecuentes

¿Todo sitio pequeño necesita una CDN?

No. Si el público está concentrado cerca del servidor, la página es liviana y el tráfico es bajo, la diferencia es pequeña. Aun así, muchos hostings ya incluyen CDN, y en ese caso no hay motivo para desactivarla.

¿La CDN hace el sitio más rápido incluso sin caché?

Solo un poco. Sin caché, la solicitud sigue yendo hasta el origen. La CDN puede acortar el handshake TLS y reutilizar conexiones con el origen, pero la gran ganancia viene de servir copias guardadas.

¿Existe una CDN sin cuota mensual para un sitio pequeño?

Sí, algunos proveedores tienen un plan sin cuota mensual con CDN, por ejemplo el plan Free de Cloudflare. Revisa los límites y condiciones en el sitio del proveedor, porque cambian con el tiempo.

¿Puedo usar una CDN en un sitio con inicio de sesión o panel?

Sí, pero solo para lo que es igual para todos, como los archivos estáticos. Las respuestas personalizadas deben salir con Cache-Control: private o no-store para no entregarse a otro visitante.

Siguiente artículo¿Cuánto cuesta un dominio?Un .com suma precio mayorista, tasa de ICANN y margen del registrador, y un .com.br tiene precio anual fijo en Registro.br. Mira por qué sube la renovación.

Más en Redes y dominios

Ver los 27 artículos