Ventajas de usar un (sub)dominio para contenido estático
No hay quién no sueñe con que el tráfico de su sitio crezca lo más posible, y eso también significa invertir en mejores servidores. Como vimos anteriormente, según las condiciones del servidor, un servidor web (comúnmente hablamos de Apache) solo puede atender simultáneamente a un número limitado de clientes.
Cuando un servidor web ya no puede mantener todas las peticiones de un sitio por si solo, una buena forma de aliviar la carga en este, es utilizar un (sub)dominio adicional en un servidor aparte. En este vamos a hospedar todo el contenido estático, como:
- Archivos relacionados a la plantilla: imágenes, archivos de javascript y hojas de estilos
- Imágenes usadas para complementar el contenido, dependiendo del Gestor de contenidos este podría automatizar el proceso de subida hacia el otro servidor
- Archivos complementarios como PDF’s, MP3’s, Videos o cualquier otro archivo que no sea generado dinámicamente
La idea es contar con un segundo servidor que utilice muy pocos recursos y que responda con los encabezados (headers) apropiados para que cada cliente mantenga estos archivos en su caché local. Al hacer esto, podemos reconocer algunas ventajas:
Balanceo de carga
Obviamente la primer meta de contar con un servidor adicional para contenido estático, es quitar carga del servidor principal, encargado de generar las páginas de nuestro sitio. Este otro servidor puede ser un más sencillo que el principal, si lo configuramos para utilizar Worker o algún servidor web alternativo como Lighttp, NGnix, etc.
Para lograr este “balanceo de carga” es tan fácil como modificar el código generado para que se enlacen a los archivos en el dominio alternativo. Por ejemplo, en Foros del Web utilizamos el subdominio static.forosdelweb.com, Yahoo usa el dominio yimg.com, La familia de sitios de Stack Overflow usan sstatic.net.
Por supuesto al llegar a tener un tráfico mucho mayor se llegará a necesitar un balanceo de carga real, con un proxy en frente de los servidores web, y mover el contenido estático a un CDN profesional como Amazon S3/CloudFront o similares.
Libre de cookies
Cuando enviamos una cookie al usuario, su navegador nos la enviará junto a todas las peticiones, sean páginas o imágenes. Esto es un problema, ya que hará que las peticiones/paquetes sufran mayor fragmentación. Yahoo hizo un estudio sobre el impacto del tamaño las cookies y el incremento en el tiempo de respuesta del servidor, de alli se concluye que es mejor reducir al mínimo posible el tamaño (si usas un CMS esto es complicado), o aún mejor que los recursos que no necesiten de estas estén en un dominio aparte, libre de cookies.
Descargas paralelas
La especificación del HTTP/1.1 sugiere que cada navegador limite el número de descargas simultaneas a 2, para un mismo host. Si tenemos un dominio adicional, esto debería darnos otras 2 descargas paralelas adicionales, reduciendo el tiempo necesario para cargar el sitio. Tampoco significa que debemos agregar varios subdominios con tal de tener muchas descargas paralelas, el incremento en consultas DNS y uso del conexiones adicionales degrada la ventaja de que se hagan en paralelo.
¿Desventajas?
No puedo pensar en desventajas reales de usar un dominio para contenido estático, más que:
- Que los ingresos y el tráfico del sitio no justifiquen el gasto en un servidor adicional o en pagar los gastos de usar Amazon S3.
- Tener un servidor adicional que no soporte la carga del contenido estático, haciendo que el tiempo de carga del sitio sea mayor.
- Que el gestor de contenidos por alguna razón dificulte, o no se tenga el conocimiento para hacer que ciertos recursos se enlacen al otro dominio.
¿Alguna otra ventaja o desventaja? ¿Experiencias al respecto? Dejen nos un comentario
Excelente, Javier, como todos tus artículos.
Muy bueno es algo que coincido, y estaba buscando información sobre el tema, yo creo que es una practica que la llevan a cabo las grandes aplicaiones. Y estaba buscndo fundamentos para llevar a cabo la implementación.
Saludos y te felicito por los aportes.
@Andrés, @Horacio gracias por sus comentarios
¿no seria mas practico tener la DB en otro servidor?
digo, asi un servidor se lleva la carga de interpretar el codigo y servir los documentos y el otro se preocupa de arrojar datos
Como balanceo de cargas es algo genial, pero una de las desventajas que le veo, es en cuanto a SEO y Analítica.
Esto porque muchas herramientas pierden el control o asignan separadamente las visitas o links. Por tanto no aportan relevancia o “potencia” al dominio o raíz del sitio.
Obviamente hablando de las imágenes que sean parte del contenido (no del diseño) y es deseable se indexen.
Sucede algo similar cuando debemos decidir en sitios multi-idiomas si queremos usar subdominio, carpeta, u otro dominio.
Gracias Javier.
Saludos
Interezante post al evaluar las ventajas de un dominio con conteido estático
[…] Aroche para Maestros del Web.Agrega tu comentario | Enlace permanente al […]
Muy interesante. Siempre me había preguntado si era por organización simplemente o por velocidad de carga.
Y gran parte de los sitios Web de Aol usan el dominio aolcdn.com.
[…] http://www.maestrosdelweb.com/editorial/ventajas-subdominio-contenido-estatico/ // Trucos […]