Logo
WP Fix by Blimx

Configuración CDN para WordPress — Cloudflare vs BunnyNet vs Fastly

Actualizado:
PerformanceInfrastructure

Por qué cada sitio WordPress necesita un CDN

Un CDN hace tres cosas por WordPress:

  1. Cachea assets estáticos (imágenes, CSS, JS) en nodos edge cerca de tus visitantes
  2. Cachea HTML de páginas cacheables (con config apropiada)
  3. 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ísticaCloudflareBunnyNetFastly
Tier gratisNo ($1 mín)No ($50 mín)
Conteo Pop320+11990+
WAFBásico gratis, Pro pagadoAdd-onPremium
Control de cachePage RulesStandardVCL (poderoso)
Cache HTMLSí (Cache Everything)Sí (Smart Cache)Sí (VCL)
Integración WordPressPlugin CloudflarePlugin BunnyManual
Mejor paraMayoría de sitios WordPressAlto tráfico, image-heavySetups 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

  1. Regístrate en cloudflare.com, añade tu dominio
  2. Actualiza nameservers en el registrador
  3. Instala plugin Cloudflare WordPress
  4. 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

  1. Regístrate en bunny.net
  2. Crea una Pull Zone apuntando a yoursite.com
  3. Instala plugin Bunny WordPress
  4. Configura la URL CDN (algo como yoursite.b-cdn.net)
  5. 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

  1. Regístrate en fastly.com (requiere tarjeta de crédito; $50 mínimo mensual)
  2. Crea un servicio para yoursite.com
  3. Configura origen = tu servidor
  4. Sube VCL custom o usa la config generada de Fastly
  5. 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 → Fastly

Para 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 HTML

Si 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.