Quién no ha tenido alguna experiencia frustrante al navegar por Internet por culpa de la velocidad, que tire la primera piedra. ¿Alguien?
Definitivamente, la velocidad de carga es un tema importante sobre todo para las empresas y quienes desean reducir la tasa de abandono de sus visitantes.
Los investigadores del Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL, por sus siglas en inglés) del MIT en colaboración con la Universidad de Harvard, han desarrollado un sistema que disminuye el tiempo de carga de la página en un 34%.
Se trata de un framework llamado «Polaris«, que determina previamente cómo se superponen la descarga de los objetos que forman parte de una página, de tal manera que la página general requiere menos tiempo para cargar.
¿Cómo se explica esto?
Bien, sabemos que para cargar una página web, un navegador web debe buscar y evaluar cada objeto como archivos HTML, código JavaScript, imágenes, etc. La evaluación de un objeto puede resultar en la exploración objetos adicionales que deben ser obtenidos y evaluados, que se describen como «dependientes» de los originales. Por lo tanto, la carga de una página web requiere que el navegador resuelva un grafo de dependencia; este orden parcial limita la secuencia en la que un navegador puede procesar los objetos individuales. Desafortunadamente, muchas aristas en el grafo de dependencia de una página no son observables por los navegadores de hoy. Para evitar violar estas dependencias ocultas, los navegadores hacen suposiciones conservadoras sobre los siguientes objetos a procesar, dejando la red y CPU subutilizados.
Dicho en otras palabras, el problema es que los navegadores no pueden ver realmente todas estas dependencias, debido a la forma en que los objetos están representados por HTML. Como resultado, los navegadores tienen que ser conservadores sobre el orden en que se cargan los objetos, lo que tiende a aumentar el número de viajes entre redes y ralentizar la carga de la página.
La solución del MIT utiliza una nueva plataforma de medición llamada Scout que realiza el seguimiento de datos de grano fino que fluyen en la pila de JavaScript y en el DOM; esto permite visualizar anticipadamente las aristas de dependencias. Así mismo permite cuantificar los beneficios de exponer estas nuevas aristas a navegadores web.
Polaris
De esta manera CSAIL presenta Polaris como un programador de cliente dinámico que está escrito en JavaScript y que funciona en navegadores no modificados; los servidores utilizando un compilador completamente automático, pueden traducir páginas normales en los que se cargan con Polaris. Polaris utiliza grafos de dependencia de grano fino para determinar dinámicamente que objetos se van a cargar y cuándo. Ya que en los grafos de Polaris no faltan los bordes, Polaris puede traer agresivamente objetos de una manera que minimiza los viajes ida y vuelta de la red. Según MIT, los experimentos en una variedad de condiciones de la red demuestran que Polaris reduce los tiempos de carga de página de 34% en la mediana y el 59% en el percentil 95.
Este sistema también es valioso para las redes móviles, ya que aquellos tienden a tener retrasos mayores que las redes cableadas. «El seguimiento de las dependencias de grano fino, tiene el potencial de reducir considerablemente los tiempos de carga de página, especialmente para las conexiones de bajo ancho de banda o de alta latencia» dice Marcos Marron, ingeniero de desarrollo de software de investigación senior de Microsoft.
Más información: https://www.csail.mit.edu/node/2720
Paper: “Polaris: Faster Page Loads Using Fine-grained Dependency Tracking”