¿Qué es el domain sharding y cómo configurarlo?

El domain sharding es una técnica que puedes aplicar de forma gratuita y lograrás optimizar la carga de WordPress de una forma bastante notoria. La técnica se basa en la carga paralela mediante el uso de una única conexión TCP. En vez de procesar el tratamiento de archivos uno por uno, haremos que el servidor procese varios elementos a la par. En vez de cargar primero un archivo HTML, luego otro JS, otro JS, un CSS, otro HTML y así hasta el infinito, ahora conseguiremos cargar todos a la vez. Vamos a lograr realizar una carga paralelizada.

Cuando solicitamos la carga de una web, se abre una conexión TCP por cada elemento a cargar por lo que el número de peticiones se dispara. La idea de usar un Domain Sharding es cargar de forma paralela todos los recursos en un menor número de peticiones TCP posible.

Por cierto, debemos recalcar que la carga paralelizada o uso de domain sharding deja de cobrar sentido en el protocolo HTTP/2 ya que esto es por defecto. Luego te explico las diferencias entre las diferentes versiones de HTTP.

Infografía de carga asíncrona o domain sharding

optimizar wordpress domain sharding infografia

El domain sharding se rige con el principio de simular un CDN. Voy a simular con un mismo dominio y sus subdominio montar subdominios y hacerlos funcionar como si de de un servidor CDN fueran. Podemos especificar para cada subdominio que tipo de archivos van a procesar. Es decir, podemos crear hasta 6 subdominios y simular que, por ejemplo:

  • El subdominio cdn1 (cdn1.optimizarwordpress.com) cargue los elementos JS
  • El subdominio cdn2 (cdn2.optimizarwordpress.com) cargue los elementos CSS
  • El subdominio cdn3 (cdn3.optimizarwordpress.com) cargue los elementos HTML
  • El subdominio cdn4 (cdn4.optimizarwordpress.com) cargue los elementos Imágenes

De esta forma, en vez de cargar las imágenes desde la URL: http://optimizarwordpress.com/wp-content/uploads/imagen.jpg cargará desde http://cdn3.optimizarwordpress.com/wp-content/uploads/imagen.jpg. Es muy importante recordar que el o los subdominios no estén cacheados puesto que si esto ocurre, no funcionará el uso del domain sharding.

¿En qué se diferencia el Domain Sharding con un CDN?

Te voy a explicar la diferencia entre Domain Sharding y un CDN.

  • CDN (Content Delivery Network): Puedes leer más sobre los CDN haciendo click aquí. El principal uso que tiene es replicar tu página web en una red distribuida de servidores a lo largo del mundo. Así, en función de la localización del usuario le mostrará el contenido desde el servidor con la réplica más cercano. Con ello se logra rebajar muchísimo el tiempo de respuesta del servidor. Si quieres leer más sobre los CDN, accede aquí: https://optimizarwordpress.com/cdn-content-delivery-network/
  • Domain Sharding: En caso de no emplear un CDN podemos usar nuestro servidor para paralelizar la carga de elementos estáticos como archivos JS, CSS, imágenes, etc..  Como te decía más arriba, el uso de esta técnica WPO solo cobra sentido en caso del protocolos inferiores al HTTP/2.

¿Cuál es la diferencia entre los protocolos HTTP/2 y HTTP/1 e inferiores?

Como te decía antes, la técnica domain sharding solo funcionaba en protocolos inferiores al HTTP/2. El ptorocolo HTTP/2 no deja de ser el mismo protocolo HTTP de toda la vida solo que con múltiples ventajas añadidas respecto a sus sucesores. El protocolo HTTP/2 salió como borrador en 2012 pero no fue hasta mediados-finales de 2015 cuando se empezó a aplicar por los navegadores y servidores web.

¿Qué ventajas tiene HTTP/2 frente a sus predecesores? 

  1. Una única conexión TCP entre cliente y servidor. Como te decía antes, ahora la mayoría de navegadores interpretan este nuevo protocolo y se puede realizar la carga paralela de contenidos bajo una misma conexión. Antes se abría y cerraba una conexión por cada elemento a cargar lo que aumentaba los tiempos de respuesta.
  2. Multiconsultas‘: Anteriormente el servidor trabajaba bajo demanda, es decir, solo respondía en cadena a peticiones. Hasta que una no estaba resuelta, no pasaba a proceder a resolver la siguiente. Por eso, gracias a la multiplexación o ‘multiconsulta’ el servidor es capaz de resolver varias peticiones diferentes y evitar cuellos de botella lo que hacía que el servidor se congestionara.
  3. Servicio “server push”: Es una característica de la que poco se habla en este nuevo protocolo y resulta que el servidor se adelante a las consultas del cliente. Es decir, más allá de la consulta que haga el cliente al servidor, este último sabe que hay elementos referenciados a esa consulta por lo que el servidor hace estimaciones de lo que es probable que el cliente también necesite. Por ello se adelanta y prepara esa información para próximas consultas y tener la información preparada para responder.
  4. Compresión de cabeceras. Todas las peticiones van acompañadas de unas cabeceras que especifican más o menos de que trata la petición. Anteriormente se enviaban en texto plano y sin comprimir por lo que, si además añadimos que HTTP/1.X trabaja petición por petición, hacía que los tiempos de respuesta aumentaran un montón.

También tiene unos fallos críticos como:

  1. Posible ataque DDoS: Como el protocolo HTTP/2 permite múltiples conexiones (Multiplexación) es posible que se haga un uso fraudulento por un atacante. Es decir, el atacante, sabiendo que un servidor hace múltiples conexiones realizará un montón de peticiones a través de una red de servidores y hará que en el servidor se produzca un cuello de botella.

¿Cómo instalar Domain Sharding en WordPress?

Te voy a explicar a instalar Domain Sharding en WordPress. Yo lo voy a instalar en un servidor con panel de administración cPanel. Pero seguro que cualquier panel que uses te dejará hacer lo que te enseñe o bien puedes decírselo a tu proveedor de alojamiento web que te lo haga. Lo que necesitamos es:

  • Un plugin gratuito llamado Domain Sharding, valga la redundancia, que lo puedes encontrar aquí: https://es.wordpress.org/plugins/domain-sharding/
  • Acceso completo a tu panel de administración de WordPress para instalar el plugin
  • Acceso al panel de administración de tu hosting o solicitar a tu proveedor que te lo instale

Paso 1. Buscar la sección de subdominios

Vamos a crear los subdominios necesarios, hasta 6 se aconseja, para hacer realidad el uso del domain sharding. A través de esos subdominios se canalizarán los archivos. Lo primero que tienes que hacer es localizar la sección de subdominios en tu panel de control:

Domain Sharding subdominios

Paso 2. Crear los subdominios

Una vez localizada la sección, accedes y verás como hay un resumen de los subdominios creados y a donde apuntan. Es probable que esta sección la veas vacía debido a que quizá nunca antes hayas tenido que crear uno. Para crear uno para el domain sharding, crear un sudominio con la siguiente configuración (Luego te explico que es cada parámetro):

Domain Sharding crear subdominio

  • En subdominio tienes que especificar un nombre, te aconsejo que todos se llamen igual y que solo cambie la variable del número. Por ejemplo: servidor1
  • En dominio selecciona el dominio sobre el que quieres crear el subdominio. Así el resultado sería: servidor1.optimizarwordpress.com.
  • En raíz del documento es donde podrá cambiar el valor que pongas. Depende de si tu servidor es apache, nginx, litespeed, etc tu raíz donde se encuentren los archivos que hacen que funcione tu WordPress cambie. Por ejemplo, en mi caso la ruta donde se encuentran la instalación de mi WordPress es: /public_html/. En otros casos puede ser /htdocs/, /www/, etc.. te recomiendo preguntarle a tu proveedor de hosting cual es la ruta.

Con estos valores hemos creado un subdominio servidor1.optimizarwordpress.com que apunte a /public_html/ por lo que simulará ser el dominio de raiz. Vamos a crear varios con la misma fórmula que se llamen servidor2, servidor3 y servidor 4 de tal forma que deberías tener:

  • servidor1.tudominio.com apuntando a public_html (depende del hosting)
  • servidor2.tudominio.com apuntando a public_html (depende del hosting)
  • servidor3.tudominio.com apuntando a public_html (depende del hosting)
  • servidor4.tudominio.com apuntando a public_html (depende del hosting)

Ya tenemos creados los subdominio pertinentes para hacer realidad el domain sharding. Ahora solo queda aplicarlos al plugin.

Paso 3. Configurar Domain Sharding con los subdominios creados

¡Genial! Has llegado hasta aquí, eso quiere decir que estás hecho todo un administrador de sistemas. Lo que tienes que hacer ahora es instalar el plugin Domain Sharding de WordPress que te dije más arriba. Una vez instalado el plugin nos vamos a encontrar con una configuración muy simple. Para ello accede a: “Ajustes” > “Domain Sharding” en la barra lateral izquierda del panel de administración de WordPress y encontrarás esta pantalla:

Domain Sharding configurar domain sharding wordpress

Si te fijas hay 3 cuadros que configurar.

  • En la caja de dominios debemos especificar los nombres de los subdominios que creamos sustituyendo la variable de los números por el símbolo de la almohadilla. De tal forma que ponemos servidor#.optimizarwordpress.com para que el plugin intuya que esa almohadilla es un número.
  • En la caja de máximo de dominios ponemos el número total de subdominios que creamos y empleamos. En este caso yo voy a usar 4. Así logramos que los subdominios, con la plantilla, llegue a servidor1, servidor2, servidor3 y servidor4.
  • Marca la casilla de “usar protocolos sin url“. Esto lo que hará es cargar los elementos desde el subdominio sin tener en cuenta si la web usa HTTP o HTTPS. Esto es muy útil si hacemos una migración a otro dominio o instancia y al final decidimos o no usar HTTPS. Siempre funcionará independientemente de si la web tiene certificado de seguridad o no.

¡¡Bien!! Ya tienes tu web con carga paralelizada de elementos. Si te fijas en el código fuente, las rutas o URL’s de los elementos ya no apuntan a URL’s tradicionales sino que los elementos cargan bajo los subdominios que hemos creado y aquí te dejo la prueba de ello:

Domain Sharding ejemplo URL's cambiadas

¿Cuándo es bueno instalar Domain Sharding?

Solo es bueno instalarlo en sitios webs que carguen bajo el protocolo HTTP inferior a HTTP/2 y que a su vez, cargue muchos elementos estáticos. Para sitios pequeños que apenas carguen recursos o que trabajen para HTTP/2 esto puede ser hasta contraproducente.

Conclusión de usar Domain Sharding

Usarlo hoy en día solo es viable en ámbitos de protocolos inferiores al HTTP/2 (HTTP/1, HTTP/1.X, HTTP/0.9…). Las ventajas son devastadoras en entornos donde se cargan multitud de elementos estáticos en páginas web muy grandes. El típico ejemplo de usa es Instagram, Twitter, Facebook.. cargan todos sus elementos mediante este tipo de técnica WPO (Web Performance Optimization). Además podrás mejorar el Crawl Budget que te destinan los principales Crawlers como los de Google.

Has visto que fácil es instalar es tipo de técnica además de que es gratuita. Notarás los tiempos de carga un montón en ámbitos de carga muy elevada de archivos estáticos. En blogs pequeños, páginas pequeñas podría ser contraproducente debido a que para que esto funcione, se debe hacer una serie de consultas DNS que pierden tiempo. Y si estas peticiones tardan más que la propia carga de archivos no sirve de nada.

Si tienes problemas en la carga de tu web o no sabes configurar Domain Sharding puedes ponerte en contacto con los técnicos de soporte de Raiola Networks que seguro que estarán encantados de poder ayudarte.