Skip to content

Todo para WordPress, el desarrollo web — y mucho más

🚀 Dominio sin cookies en WordPress: guía completa de configuración

🚀 Dominio sin cookies en WordPress: guía completa de configuración

GTmetrix le da a su página un 72/100, y las recomendaciones muestran «Serve static content from a cookieless domain». Usted hace clic y ve una lista de 40 archivos CSS, cada uno arrastrando consigo una cabecera Set-Cookie. Imágenes, fuentes, scripts, decenas de solicitudes, y cada una lleva una cabecera HTTP que estos archivos absolutamente no necesitan.

El problema no es su código. Es una característica arquitectónica: el servidor establece cookies a nivel de dominio, y el navegador obedientemente las adjunta a cada solicitud, incluso a aquellas donde la autenticación y las sesiones no tienen sentido. El resultado: kilobytes extra en cada respuesta, carga estática más lenta y una bandera roja en los informes de GTmetrix y Pingdom.

Buenas noticias: esto toma 15 minutos arreglarlo sin cambiar de alojamiento. No necesita un segundo servidor, no necesita un plan empresarial costoso. Un subdominio separado o una CDN es suficiente, y los archivos estáticos viajarán sin cookies mientras su puntuación en GTmetrix sube de 10 a 15 puntos.

💡 Resumen rápido:

  • Entienda por qué las cookies se «filtran» al contenido estático y cuándo es realmente un problema
  • Configure un subdominio separado para wp-content a través de cPanel, paso a paso, incluyendo el reemplazo de URL por SQL
  • Conecte KeyCDN mediante el plugin CDN Enabler como alternativa moderna (5 minutos, desde $4/mes)
  • Sepa por qué Cloudflare no elimina la advertencia de GTmetrix, y cuándo puede ignorarla

Por qué las cookies terminan en el contenido estático

Las cookies se establecen a nivel de dominio. Pero hay un matiz que a menudo se pasa por alto: los subdominios heredan la configuración de cookies del dominio principal. Si el sitio reside en example.com y establece cookies para ese dominio, automáticamente van a www.example.com y static.example.com.

Por eso, simplemente crear un subdominio static.example.com no es suficiente. Mientras el sitio principal permanece en el dominio raíz, las cookies se «filtrarán» al subdominio. La solución es simple pero contraintuitiva: mueva el sitio a www.example.com y coloque el contenido estático en static.example.com. Entonces las cookies se aplican a www, mientras que static permanece limpio.

La segunda opción, un dominio completamente separado. Técnicamente funciona, pero comprar un dominio para esta tarea casi nunca se justifica: un manejo adecuado de subdominios es suficiente.

Y algo más: en alojamientos WordPress gestionados como Kinsta, WP Engine o SiteGround, el problema a menudo ya está resuelto a nivel de servidor. Si el plan incluye «edge caching» o «CDN incluida», no se necesita configuración adicional.

Método 1. Subdominio separado para contenido estático a través de cPanel

El método básico que funciona en cualquier alojamiento con cPanel. Sin servicios de terceros, sin pagos mensuales. La idea: crear un subdominio, vincularlo a /wp-content, e indicarle a WordPress que sirva el contenido estático a través de él.

Crear un subdominio

Vaya a cPanel → sección «Dominios» → «Subdominios». Cree el subdominio static.yoursite.com. En el campo Document Root, especifique la ruta a wp-content: normalmente es public_html/wp-content.

Verifique: el sitio principal debe estar en www.yoursite.com. Si está en el dominio raíz sin www, primero mueva el sitio a www, de lo contrario el método no funcionará.

Añadir constantes a wp-config.php

Abra wp-config.php en la raíz del sitio y añada dos líneas ANTES del comentario /* That's all, stop editing! Happy publishing. */:

1define('WP_CONTENT_URL', 'https://static.yoursite.com');
2define('COOKIE_DOMAIN', 'www.yoursite.com');
Constantes PHP WP_CONTENT_URL y COOKIE_DOMAIN en wp-config.php

WP_CONTENT_URL le dice a WordPress que sirva todo el contenido de /wp-content/ a través del nuevo subdominio. COOKIE_DOMAIN restringe el alcance de las cookies al subdominio www, impidiendo que se propaguen a static.

Reemplazar las URL de los archivos existentes en la base de datos

Las entradas ya publicadas almacenan enlaces a las antiguas URL de imágenes. Deben reemplazarse en lote a través de phpMyAdmin.

Ingrese a phpMyAdmin (cPanel → Bases de datos), seleccione la base de datos de WordPress, pestaña SQL. Ejecute:

1UPDATE wp_posts SET post_content = REPLACE(post_content, 'www.yoursite.com/wp-content/', 'static.yoursite.com/');
Consulta SQL para reemplazar URLs estáticas en phpMyAdmin para WordPress

Antes de ejecutar, haga una copia de seguridad de la base de datos. El reemplazo SQL es irreversible. Si se equivoca en la URL, las imágenes del sitio se romperán y tendrá que restaurar desde una copia de seguridad.

Ventajas y desventajas

El método funciona sin servicios de terceros y sin gastos adicionales. Pero: edición manual de wp-config.php y la base de datos, riesgo de errores SQL, necesidad de mantener la configuración de dos subdominios. En un VPS con NGINX también necesitará editar la configuración del servidor, lo que añade complejidad.

Para la mayoría de los sitios hoy existe una opción más simple, la CDN.

Método 2. CDN como solución moderna

Una red de entrega de contenido lleva el contenido estático a sus servidores y por defecto no usa cookies para los archivos. Usted obtiene dos cosas a la vez: contenido estático sin cookies más una red de distribución global que acelera la carga para visitantes desde cualquier parte del mundo.

Servicio KeyCDN, CDN de pago por uso con precios desde $0.04/GB de tráfico y pago mínimo de $4/mes. Para un sitio promedio, los costos son de $4 a $10 por mes. Más de 60 puntos de presencia, opción integrada Strip Cookies que elimina forzosamente las cabeceras Set-Cookie de las respuestas.

Conexión a través de CDN Enabler

CDN Enabler, plugin oficial de KeyCDN para WordPress. Versión 2.0.8, más de 10,000 instalaciones activas, probado hasta WordPress 6.9. Intercepta las páginas y reescribe las URL de archivos estáticos al dominio de la CDN.

Pasos de configuración:

  • Cree una cuenta en KeyCDN. El servicio ofrece un período de prueba, puede probarlo sin realizar un pago.

  • Instale CDN Enabler desde el repositorio de WordPress: Plugins → Añadir nuevo → busque «CDN Enabler» → Activar.

  • Cree una zona Pull en el panel de KeyCDN. La zona define qué contenido extraerá la CDN de su sitio. Especifique la URL de origen, la dirección de su sitio.

Crear una zona Pull en el panel de KeyCDN con campos de URL de origen
  • Copie la URL de la zona, que tiene el formato https://yourzone.kxcdn.com, y péguela en los ajustes de CDN Enabler: Ajustes → CDN Enabler → CDN Hostname.
Campo de nombre de host CDN en los ajustes del plugin CDN Enabler para WordPress
  • Active Strip Cookies en KeyCDN: Zone Settings → Strip Cookies = Enabled. Esta opción garantiza que los archivos estáticos se sirvan sin cabeceras Set-Cookie.

  • Limpie la caché del sitio y compruebe el resultado en GTmetrix.

CDN Enabler funciona con cualquier CDN. Si ya utiliza Cloudflare, BunnyCDN o StackPath, simplemente especifique el CDN Hostname de su proveedor.

Punto importante: tras desactivar el CDN y eliminar el plugin, las URL de las imágenes pueden permanecer reescritas al dominio del CDN. Antes de desactivarlo, limpie la caché del plugin y asegúrese de que las URL han vuelto a las originales.

Método 3. Cloudflare, gratuito pero con un matiz

Cloudflare, el mayor CDN con un nivel completamente gratuito. Funciona a nivel de DNS: cambie el dominio a los servidores de nombres de Cloudflare y todo el tráfico pasará por su red.

Pero hay un matiz. Cloudflare utiliza una cookie de servicio _cfduid en cada solicitud por motivos de seguridad. Es fundamental para la protección DDoS y contra bots, e incluso si activa «Strip Cookies» en el plan Pro, esta cookie no se elimina.

Debido a _cfduid, GTmetrix seguirá mostrando la advertencia «Serve static content from a cookieless domain». Lograr 100/100 en la métrica YSlow con Cloudflare gratuito es técnicamente imposible. Pero se trata de un falso positivo: el contenido estático a través de Cloudflare se carga igual de rápido y una cookie de servicio no afecta al rendimiento real.

Si le importa la puntuación máxima en GTmetrix, KeyCDN con Strip Cookies. Si la prioridad es un servicio gratuito y protección DDoS, Cloudflare lo cubre por completo.

Cuándo ignorar la advertencia de GTmetrix

Situación común: el CDN está configurado, Strip Cookies está activado, pero GTmetrix sigue mostrando un error de dominio sin cookies. La razón es que YSlow, el motor de GTmetrix, no verifica si Strip Cookies está activado en el lado del CDN. Ve una URL similar al dominio principal y marca mecánicamente una advertencia.

Verificación en 30 segundos: abra Chrome DevTools (F12) → Network → seleccione cualquier archivo estático, CSS, JS o PNG → pestaña Headers → Request Headers. Si no hay una línea Cookie: allí, el contenido estático viaja sin cookies, puede ignorar la advertencia de GTmetrix.

Otra fuente de falsos positivos: las cookies de servidor de analítica y pruebas A/B (Google Analytics, Hotjar, VWO). También aparecen en el informe como «extra», aunque afectan mínimamente la velocidad de la página.

La reducción real de tráfico al eliminar cookies del contenido estático ronda el 5-15% del total de solicitudes. No es revolucionario, pero cada milisegundo cuenta: una investigación de Google mostró que un retraso de 1 segundo reduce la conversión de visitantes móviles en un 20%.

⁉️🤔 Preguntas frecuentes

¿Es obligatorio configurar un dominio sin cookies?

No, no es un requisito estricto. Pero si usted compite por velocidad, eliminar cookies innecesarias del contenido estático ofrece ganancias medibles, especialmente en sitios con mucho contenido multimedia: tiendas en línea, blogs de fotografía y portales de noticias. Para una página de aterrizaje de tres bloques, el efecto será insignificante.

¿Qué hacer si después de editar wp-config.php el sitio dejó de abrirse?

Es casi seguro que cometió un error en las constantes de las URL o las colocó DESPUÉS de la línea /* That's all, stop editing! */. Conéctese al sitio por FTP, abra wp-config.php y verifique: las constantes deben estar ANTES de este comentario. Si el sitio aún no carga, comente las líneas añadidas (// al inicio de cada una), el sitio volverá a su estado original, tras lo cual intente de nuevo con las URL correctas.

¿Se puede usar CDN Enabler con otros plugins de caché?

Sí, sin problema. CDN Enabler es compatible con Cache Enabler, WP Rocket, W3 Total Cache y LiteSpeed Cache. Un matiz: si tiene WP Rocket, el CDN se configura en el propio WP Rocket, no necesita un plugin CDN Enabler aparte. Con otros plugins de caché funciona en paralelo, sin conflictos registrados.

¿Qué CDN elegir para un sitio pequeño?

Depende del presupuesto y las prioridades. Precios de KeyCDN (desde $0.04/GB, mínimo $4/mes), un buen comienzo: pago por uso, solo paga por el tráfico. Cloudflare, gratuito pero con una cookie de servicio y falsa advertencia de GTmetrix. BunnyCDN (desde $0.01/GB en planes por volumen, desde $1/mes mínimo), más barato pero con menos puntos de presencia. Para un sitio con tráfico de hasta 10,000 visitas al mes, los costos del CDN serán de $2-7.

¿Se necesita un dominio sin cookies si el hosting es moderno?

Los hosts de WordPress gestionado, Kinsta, WP Engine, SiteGround, a menudo incluyen CDN integrado o caché de servidor que ya resuelve el problema de las cookies. Revise su plan: si la descripción incluye «edge caching» o «CDN incluido», no necesita configuración adicional. En un hosting compartido económico sin CDN, configurar un dominio sin cookies dará un impulso notable.

¿Qué hacer si las imágenes desaparecieron después de la consulta SQL?

O cometió un error en la URL (verifique la coincidencia del dominio en la consulta y la configuración del subdominio), o el subdominio static.yoursite.com apunta al directorio equivocado. Restaure la base de datos desde la copia de seguridad y verifique: el Document Root del subdominio debe ser public_html/wp-content, y el dominio en la consulta SQL debe coincidir con lo creado en cPanel (con www. o sin él, depende de la configuración del sitio principal).

Qué método elegir para su proyecto

Si el sitio está en un hosting económico sin CDN y sin presupuesto para servicios de pago, configure un subdominio separado mediante cPanel. Son 15 minutos de trabajo: subdominio, dos líneas en wp-config.php y una consulta SQL. El contenido estático viajará sin cookies, GTmetrix mejorará. La desventaja: mantenimiento manual y sin aceleración global.

Si está listo para pagar $4-10 al mes, use la combinación KeyCDN + CDN Enabler. La misma tarea se resuelve automáticamente, además obtiene una red de distribución desde más de 60 puntos, compresión y aceleración para visitantes desde cualquier parte del mundo. Para un proyecto que genera ingresos o planea generarlos, el CDN se paga solo de inmediato.

Y lo más importante, no se obsesione con las puntuaciones de GTmetrix. La velocidad real para los usuarios importa más que los números en un informe. Si el contenido estático viaja sin cookies (verificado mediante DevTools) y el sitio carga en menos de 2 segundos, la tarea está resuelta.

Para refrescar el panorama completo sobre cómo acelerar WordPress, la guía oficial del equipo de WordPress.com ayuda, desde la caché hasta el CDN, con mediciones en vivo y configuración: