Estaba optimizando el tiempo de carga de la página de un sitio web. Una de las formas fue combinando múltiples solicitudes HTTP para CSS en una solicitud HTTP combinada. Pero uno de los revisores hizo una pregunta interesante: ¿la paralelización de la descarga de múltiples archivos CSS no reduciría los tiempos de carga de la página?
Nunca consideré esta opción, ya que lo único que leí en Internet es que reducir el número de solicitudes HTTP (bloqueo) es clave para una página web más rápida (aunque Google Pagespeed Insights no parece indicar esto claramente 1 ).
Veo algunas razones por las cuales la paralelización no mejoraría el rendimiento, o solo importaría muy poco (compensada por el beneficio de usar menos solicitudes HTTP):
- Configurar una nueva conexión es costoso. Si bien la configuración de varias conexiones se puede hacer en paralelo, los navegadores usarán como máximo unas 4-6 conexiones (dependiendo del navegador), por lo que descargar CSS en paralelo bloquearía la descarga de otros activos como JavaScript e imágenes.
- Configurar una conexión HTTPS requiere algunos datos adicionales. He leído que esto puede ser fácilmente unos pocos KB de datos. Estos son algunos datos adicionales que deben enviarse por cable, en lugar del CSS que realmente queremos enviar.
- Debido al algoritmo de inicio lento de TCP, cuantos más datos se hayan enviado a través de una conexión, más rápida será la conexión. Por lo tanto, las conexiones de mayor duración enviarían los datos mucho más rápido que las conexiones nuevas. Consulte, por ejemplo, el protocolo SPDY, que utiliza una única conexión para mejorar los tiempos de carga de la página.
- TCP es una abstracción: todavía hay (normalmente) solo una conexión subyacente. Por lo tanto, aunque se utilizan múltiples solicitudes, los datos enviados a través del cable no necesariamente se benefician de múltiples conexiones para mejorar la velocidad.
- Las conexiones a Internet son inherentemente poco confiables, especialmente en dispositivos móviles. Una solicitud puede finalizar significativamente más rápido que la otra. El uso de múltiples solicitudes de CSS significa que la página web está bloqueada hasta que la última solicitud haya finalizado, lo que puede ser significativamente más tarde que la conexión promedio.
Entonces, ¿hay algún beneficio en paralelizar las solicitudes HTTP para archivos CSS?
Nota / actualización: todos los archivos CSS bloquean el renderizado. Los archivos CSS que aún no se han movido fuera de la ruta crítica.