Por qué cada sitio WordPress necesita un CDN
Un CDN hace tres cosas por WordPress:
- Cachea assets estáticos (imágenes, CSS, JS) en nodos edge cerca de tus visitantes
- Cachea HTML de páginas cacheables (con config apropiada)
- Filtra tráfico malicioso antes de que alcance tu origen
Sin CDN, cada visitante golpea tu servidor origen. Con CDN, tu origen ve 5-10% del tráfico total. El rendimiento mejora dramáticamente; la carga del origen cae; los ataques de bots se filtran.
La pregunta no es si usar un CDN — es cuál.
Las tres opciones para WordPress en 2026
Desplegamos tres CDNs dependiendo de las necesidades del cliente:
| Característica | Cloudflare | BunnyNet | Fastly |
|---|---|---|---|
| Tier gratis | Sí | No ($1 mín) | No ($50 mín) |
| Conteo Pop | 320+ | 119 | 90+ |
| WAF | Básico gratis, Pro pagado | Add-on | Premium |
| Control de cache | Page Rules | Standard | VCL (poderoso) |
| Cache HTML | Sí (Cache Everything) | Sí (Smart Cache) | Sí (VCL) |
| Integración WordPress | Plugin Cloudflare | Plugin Bunny | Manual |
| Mejor para | Mayoría de sitios WordPress | Alto tráfico, image-heavy | Setups custom, complejos |
| Costo mensual | $0-20 | $5-50 | $50+ |
Cloudflare: el default para la mayoría de sitios WordPress
Cuándo elegir Cloudflare
- Sitio nuevo o iniciando viaje CDN
- Presupuesto ajustado (el tier gratis es generoso)
- Necesitas protección fácil DDoS y bots
- Quieres configuración específica WordPress sin codear
Procedimiento de setup
- Regístrate en cloudflare.com, añade tu dominio
- Actualiza nameservers en el registrador
- Instala plugin Cloudflare WordPress
- Ingresa token API en el plugin
Configuración que ponemos en cada sitio WordPress con Cloudflare:
Speed → Optimization
Auto Minify: HTML, CSS, JS todos on
Brotli: On
Rocket Loader: OFF (rompe WordPress)
Caching → Configuration
Browser Cache TTL: 4 horas
Always Online: On
Crawler Hints: On
Caching → Cache Rules
Regla 1: Cuando URI Path contiene "/wp-admin" → Bypass cache
Regla 2: Cuando URI Path contiene "/wp-login.php" → Bypass cache
Regla 3: Cuando URI Path equals "/" → Cache Everything, 2 horas
SSL/TLS
Mode: Full (strict)
Always Use HTTPS: On
Min TLS: 1.2
Security
Browser Integrity Check: On
Bot Fight Mode: On (Pro: Super Bot Fight Mode)La regla Cache Everything para el homepage baja TTFB de 800ms a 50ms.
BunnyNet: la alternativa de alto rendimiento
Cuándo elegir BunnyNet
- Sitio image-heavy (galerías, fotografía, catálogos de producto)
- Audiencia internacional (especialmente Asia, donde Bunny tiene buena cobertura)
- Necesitas optimización de imágenes incorporada
- Presupuesto permite $5-20/mes
Por qué Bunny destaca
La arquitectura de POPs edge de Bunny optimiza para velocidad bruta de entrega. Su procesamiento de imágenes (Bunny Optimizer) hace conversión WebP/AVIF on-the-fly. El precio es competitivo: $0.005/GB para América del Norte/Europa.
Procedimiento de setup
- Regístrate en bunny.net
- Crea una Pull Zone apuntando a yoursite.com
- Instala plugin Bunny WordPress
- Configura la URL CDN (algo como
yoursite.b-cdn.net) - Habilita Bunny Optimizer (opcional, $9.50/mes)
El plugin auto-reescribe URLs de imagen/CSS/JS de yoursite.com/wp-content/... a yoursite.b-cdn.net/wp-content/....
Para cache HTML, necesitas la característica Smart Cache de Bunny en una Premium Pull Zone. Configuración vía dashboard:
- Cache Expiration Time: 1 hora
- Cache Bypass Cookies:
wordpress_logged_in_*, woocommerce_*, comment_* - Strip Query String: No
- Cache Settings: Override origin
Esto cachea peticiones HTML no-logueadas. Usuarios logueados bypasean cache automáticamente.
Fastly: la opción de usuario poder
Cuándo elegir Fastly
- Sitio de alto tráfico (1M+ requests/día)
- Lógica de caching compleja (mezcla cacheable/no-cacheable en misma URL)
- Necesitas purging en tiempo real a escala
- Tienes un desarrollador que puede escribir VCL
- Presupuesto permite $50+/mes
Por qué Fastly es diferente
Los nodos edge de Fastly corren VCL (Varnish Configuration Language), lo que significa que puedes escribir lógica de cache custom. Ejemplos:
# Cache HTML por 1 hora, pero salta cache para usuarios logueados
sub vcl_recv {
if (req.url ~ "^/wp-admin") {
return(pass);
}
if (req.http.cookie ~ "wordpress_logged_in_") {
return(pass);
}
}
# Cache respuestas por 1 hora, permite stale por 24 horas
sub vcl_fetch {
set beresp.ttl = 1h;
set beresp.grace = 24h;
}Este nivel de control no es posible en Cloudflare o BunnyNet.
Procedimiento de setup
- Regístrate en fastly.com (requiere tarjeta de crédito; $50 mínimo mensual)
- Crea un servicio para yoursite.com
- Configura origen = tu servidor
- Sube VCL custom o usa la config generada de Fastly
- Actualiza DNS para apuntar a Fastly
Para WordPress: la documentación de Fastly tiene un VCL de muestra específicamente para WordPress. Empieza ahí, después customiza.
Eligiendo uno (árbol de decisión)
Pregunta 1: ¿Cuál es tu nivel de tráfico?
Bajo 100K visitas/mes → Cloudflare Free
100K-1M visitas/mes → Cloudflare Pro o BunnyNet
1M+ visitas/mes → BunnyNet o Fastly
Pregunta 2: ¿Qué tan image-heavy?
Image-heavy (galería, e-commerce) → BunnyNet
Text-heavy (blog, revista) → Cloudflare
Pregunta 3: ¿Necesitas lógica de cache custom?
Caching estándar es suficiente → Cloudflare o BunnyNet
Necesitas VCL o reglas complejas → Fastly
Pregunta 4: ¿Presupuesto?
$0-20/mes → Cloudflare
$20-50/mes → BunnyNet
$50+/mes → FastlyPara 80%+ de sitios WordPress que manejamos, la respuesta es Cloudflare Free o Pro. Para sitios de imagen de alto tráfico, BunnyNet. Para setups complejos con desarrolladores en staff, Fastly.
Optimizaciones WordPress específicas de CDN
Sin importar el CDN, estas configuraciones WordPress ayudan:
Headers de cache largos en assets estáticos
location ~* \.(jpg|jpeg|png|gif|ico|css|js|webp|avif|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}URLs de asset versionadas
WordPress ya hace esto vía parámetros query ?ver=X.Y. El CDN debería respetar estos. No tires query strings en assets cacheados.
Bypass cache para páginas personalizadas
Páginas que NUNCA deberían cachearse (en cualquier CDN):
/wp-admin/*/wp-login.php/cart/,/checkout/,/my-account/(WooCommerce)/?p=*&preview=true
Errores comunes durante setup CDN
- Cachear wp-admin — rompe login, operaciones de guardado
- No configurar bypass cookies — usuarios logueados ven contenido anónimo cacheado
- Minify agresivo en JS — Rocket Loader de Cloudflare rompe muchos temas WordPress
- No purgar en actualización — contenido viejo queda cacheado tras publicar cambios
Midiendo efectividad CDN
Tras despliegue, mide:
# TTFB desde una ubicación remota
curl -w "@curl-format.txt" -o /dev/null -s https://yoursite.com/
# Cache hit ratio (vía dashboard CDN)
# Meta: 90%+ para assets estáticos, 50%+ para HTMLSi TTFB no mejora, el CDN no está cacheando lo que crees. Revisa los headers de respuesta:
curl -I https://yoursite.com/
# Busca: cf-cache-status: HIT (Cloudflare)
# O: x-cache: HIT (BunnyNet)
# O: X-Cache: HIT (Fastly)Cuándo llamar a un especialista
El setup de CDN se ve simple pero los errores de configuración cuestan rendimiento. Desplegamos CDNs como parte de cada proyecto de recuperación de velocidad, con el tuning WordPress-específico que previene las roturas comunes.
Setup y tuning CDN típicamente 2-4 horas. Para trabajo más amplio de rendimiento ve recuperación de velocidad.

