Con toda esa información en mente, pasemos a la salida y pintura de la página. Esto es lo que quiero mostrarte cómo optimizar, y quiero utilizar las últimas funciones del navegador disponibles en Edge y también en Chrome. En esta presentación de diapositivas, puedes ver en CanIUse dónde es compatible y ya te he dicho que, desafortunadamente, solo es compatible con Edge y Chrome, pero todos los demás navegadores están trabajando mucho para implementarlo.
Ahora que entendemos dónde se puede usar, veamos cuál podría ser el impacto potencial. Aquí tenemos una medición de laboratorio de una página en un estado no optimizado, una página optimizada con visibilidad de contenido o nodos en pantalla, lo que significa que todo el contenido es visible dentro de la página, y luego todo el contenido fuera de pantalla, lo que significa que está debajo del tamaño de tu pantalla y no es visible para el usuario en ese momento. Si observamos los números, los números superiores están en verde, que representan la pintura, por lo que podemos pasar de una pintura no optimizada de seis milisegundos a una pintura optimizada en pantalla de un milisegundo y fuera de pantalla realmente, realmente rápida, de 0.1 milisegundos fuera de pantalla. Este es realmente un impacto interesante, diría que tremendo. Aún más interesante para el diseño, esta es la parte inferior de la diapositiva, puedes ver 11 milisegundos para actualizar el árbol de capas y pintar con la optimización todo en pantalla 0.5 milisegundos y luego todo fuera de pantalla es solo 61 microsegundos, lo cual es un número realmente interesante y un impacto dramático. Si bien las mediciones de laboratorio son útiles para aprender y comprender, lo que realmente nos interesa son los datos de campo. Así que veamos lo que logré en la práctica. La optimización del tiempo de renderizado es lo primero que quiero mostrarte, y en la siguiente diapositiva vemos nuevamente desde observable HQ en la parte superior alguna animación y trabajo de diseño que está presente aquí. Y la tarea más larga en este trabajo de diseño tomó básicamente 260 milisegundos. Por supuesto, es una tarea larga porque dura más de 50 milisegundos y con mi aplicación de visibilidad de contenido pude reducirlo a 15 milisegundos para el mismo trabajo realizado en el mismo sitio web. Esto es una mejora tremenda y realmente bueno ver lo que es posible con solo uno o dos pequeños cambios en tu aplicación. Lo siguiente que quiero demostrar o presentarte es la programación y el presupuesto de cuadros. Esto es especialmente importante para eliminar o al menos reducir el tiempo total de bloqueo de la ejecución de scripts. Lo que vemos en esta diapositiva es la programación del trabajo y cómo podría mejorar la entrada hasta el siguiente pintado, el tiempo total hasta la interactividad y el tiempo total de bloqueo. Imagina que hay un clic en un botón y ese clic en el botón causaría algún trabajo y en lugar de ejecutar ese trabajo de inmediato, tomo ese paquete de trabajo y lo muevo a la siguiente tarea, al siguiente cuadro gris, y lo ejecuto más tarde en el tiempo. En este ejemplo específico, utilicé el marco de animación para realizar la actualización porque era una actualización visual que cambiaba algunos píxeles pero esto básicamente también es posible con muchas otras APIs de programación. Lo que se marca aquí es el momento de programación en el tiempo y la duración de la programación. Veamos qué mejoraría teóricamente. Lo que vemos aquí en la línea horizontal punteada de color rosa intenso es el siguiente momento posible en el que el navegador podría procesar la interacción del usuario. Esto es una mejora muy buena y también aumentó el tiempo hasta la interactividad en cantidades tremendas como puedes ver en este primer paréntesis aquí y también redujimos el tiempo total de bloqueo en 50 milisegundos porque cada tarea está bien si dura menos de 50 milisegundos y ahora tenemos dos en lugar de una tarea. Mejoras realmente asombrosas y esto es solo la teoría. En la práctica, la optimización del tiempo total de bloqueo y la demora de entrada es lo siguiente que quiero mostrarte y en este ejemplo quiero demostrar nuevamente la aplicación de películas y la inicialización de esa aplicación. Si observamos este diagrama aquí, básicamente vemos una tarea enorme que está procesando algunos archivos JavaScript y luego ejecutando el framework. Después de algunas optimizaciones en la parte izquierda, todavía tenemos una tarea un poco grande porque optimizar un paquete de webpack y su compilación no es tan fácil, pero todo lo que está en el ámbito del framework ahora está optimizado y podemos ver muchas líneas verticales punteadas de color rosa intenso y esas básicamente son todas tareas separadas que permiten al navegador procesar la entrada del usuario y como puedes ver, todas esas tareas no son tareas largas, por lo que son mejoras realmente, realmente asombrosas que podríamos lograr con la programación y la fragmentación. Lo último y más emocionante que puedo demostrarte son los Flujos de Usuario. Los Flujos de Usuario son una de las nuevas y elegantes funciones que Chrome DevTools lanzará, actualmente solo se puede acceder en Chrome Canary, pero debes saber que hay una biblioteca de código abierto que puedes usar e instalar desde hoy y ejecutar todas esas cosas nuevas de manera totalmente estable en tu CI o desde tu CLI. El enlace aquí es
Comments