Aplicaciones web de alta velocidad: más allá de lo básico

Rate this content
Bookmark

Saber cómo ejecutar pruebas de rendimiento en tu aplicación web de manera adecuada es una cosa, y aprovechar esas métricas de manera efectiva es otra. Y ambos aspectos son cruciales para el éxito general de tus esfuerzos de optimización de rendimiento. Sin embargo, a veces puede ser todo un desafío, ya que implica tener un entendimiento preciso de todos los detalles tanto de los datos de rendimiento como de las herramientas de rendimiento. Esta charla arrojará luz sobre cómo superar este desafío y te guiará a través de los obstáculos y trucos del oficio de Chrome DevTools, brindándote una hoja de ruta completa para el análisis y optimización de rendimiento.

FAQ

La Prioridad de Fetch es una característica en Chrome DevTools que permite determinar qué solicitudes HTTP tienen más prioridad sobre otras. Esta funcionalidad puede ser utilizada para optimizar la carga y el rendimiento de las páginas web, asegurando que los recursos más críticos se carguen primero.

Puedes mejorar el tiempo de conexión en Chrome DevTools utilizando el atributo pre-connect en tus enlaces. Esto le indica al navegador que establezca una conexión con ciertos endpoints de API al inicio de la carga de la aplicación, lo que puede reducir significativamente los tiempos de conexión posteriores.

Una tarea larga en la pestaña de rendimiento de Chrome DevTools es aquella que tarda más de 50 milisegundos y puede bloquear el procesamiento de la entrada del usuario. Se identifica por un área roja o un triángulo rojo en el gráfico de la pestaña de rendimiento, indicando que la tarea está tomando demasiado tiempo y afectando la interactividad.

Los flujos de usuario son una herramienta en Chrome DevTools que permite medir el rendimiento en tiempo de ejecución de un usuario en un sitio web de formas nuevas. Esta funcionalidad es útil para entender cómo interactúan los usuarios con tu sitio y optimizar su experiencia basándose en datos de rendimiento reales.

La visibilidad de contenido es una característica de CSS que puedes utilizar para optimizar el rendimiento en Chrome. Permite especificar qué partes del contenido deben tener prioridad en la carga y cuáles pueden ser pospuestas, mejorando así los tiempos de carga y la experiencia del usuario.

Para reducir el tiempo total de bloqueo en Chrome DevTools, puedes aplicar técnicas como fragmentar tareas largas en varias más cortas, usar el scheduling del trabajo en el hilo principal y optimizar scripts con atributos como defer, preload o prefetch. Estos cambios pueden mejorar significativamente la interactividad y la velocidad de tu sitio web.

Michael Hladky
Michael Hladky
30 min
20 Jun, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla cubre las últimas características de Chrome DevTools, incluyendo el análisis de la pestaña de red, la optimización de la pestaña de rendimiento y los flujos de usuario. Se discute la optimización de las solicitudes HTTP con prioridad de búsqueda para mejorar el tiempo de carga. La pestaña de rendimiento proporciona información sobre caídas de fotogramas, tareas largas y la importancia de minimizar el tiempo total de bloqueo. La charla también destaca la optimización de la representación de la página e introduce los flujos de usuario en Chrome DevTools.

1. Introduction to Chrome DevTools

Short description:

Hola y bienvenidos a mi charla, Aplicaciones web de alta velocidad más allá de lo básico. Cubriré las últimas características en Chrome DevTools, incluyendo el análisis de la pestaña de red, la optimización de la pestaña de rendimiento y los flujos de usuario. Comencemos con la pestaña de red, donde puedes analizar las solicitudes HTTP y utilizar la prioridad de fetch para optimizar el contenido. En la pestaña de rendimiento, demostraré optimizaciones utilizando la visibilidad y programación de contenido. Por último, presentaré los flujos de usuario y presentaré las últimas herramientas para medir el rendimiento en tiempo de ejecución.

Hola y bienvenidos a mi charla, Aplicaciones web de alta velocidad más allá de lo básico, una charla sobre las últimas y mejores características en Chrome DevTools. Permítanme presentarme rápidamente. Mi nombre es Michael, Michael Lutke. Muy difícil de leer, escribir y pronunciar, así que quedémonos con Michael. Lo que hago es consultorías, capacitaciones y masterclasses en el campo de las optimizaciones de rendimiento, Angular y programación reactiva. También dirijo una empresa llamada Pushbased. Pueden visitarla, simplemente hagan clic en el enlace en mis diapositivas. Pero ahora veamos qué hay en la agenda. En primer lugar, hablaré sobre la pestaña de red. Les mostraré lo que pueden ver en la pestaña de red y luego intentaré ver algunas de las últimas características. Una de las características geniales que se envían en Chrome es la prioridad de fetch y utilizaré la prioridad de fetch para optimizar el contenido más grande para la pintura con una imagen, así como con las solicitudes HTTP. Más adelante les mostraré cómo ver la pestaña de rendimiento. Esto no es realmente fácil porque hay mucha información y espero o mejor dicho, prometo que después de la charla podrán al menos tener un poco más de comprensión sobre lo que verán allí y qué buscar. Para demostrar algunas optimizaciones en la pestaña de rendimiento, utilizaré la visibilidad de contenido, una característica de CSS muy interesante y también les presentaré la programación y fragmentación del trabajo en el hilo principal. Al final de mi charla, algunas cosas realmente emocionantes de las que quiero hablar son los flujos de usuario. El flujo de usuario es básicamente una nueva herramienta que actualmente solo está disponible en Canary Chrome y nos permite medir el rendimiento en tiempo de ejecución de formas completamente nuevas. Al final, les presentaré las últimas y mejores herramientas sobre el flujo de usuario, cómo usarlas y también cómo integrar esas cosas en su CI. Sin más pausas, pasaré directamente al análisis de red y la pestaña de red. Entonces, lo que ven aquí en esta herramienta es, en primer lugar, seleccioné la pestaña de red y luego tienen mucha información presente. Mucha información sobre todas las solicitudes HTTP que se realizan desde su aplicación. Y si observan más de cerca la parte derecha de esa diapositiva, verán el diagrama de cascada. En el diagrama de cascada, básicamente ven un gráfico de barras de tiempo que muestra todas nuestras solicitudes HTTP, su inicio, su final y el tiempo que están compuestas. Si pasan el cursor sobre una de esas pestañas, verán el tiempo de la solicitud. Y el tiempo de la solicitud puede mostrarles información sobre el tiempo de conexión, cuántos datos había y todos los demás tiempos y duraciones que fueron necesarios para recibir todos esos datos. En esta diapositiva ven una columna que básicamente nos habla sobre la prioridad de las solicitudes HTTP. Podemos ver que algunas de esas solicitudes HTTP son más importantes, tienen una prioridad más alta que otras, y quiero aprovechar una de las últimas características, la Prioridad de Fetch, para demostrar lo que se puede lograr con la prioridad en su aplicación. Sin más información en la pestaña de red, pasaré directamente a la práctica y les mostraré cómo podemos cambiar todas las solicitudes que se realizan y cómo podemos mejorarlas. Una de las primeras cosas que quiero mejorar, también visible en la pestaña de red, es el tiempo de conexión. En esta diapositiva ven en la parte superior una versión no optimizada de dos solicitudes HTTP a dos dominios diferentes y como pueden ver, hay un bloque naranja que se conecta y luego un bloque azul que se descarga, otro bloque naranja que se conecta y otro bloque azul que se descarga. Entonces, si aprovechamos el atributo pre-connect en nuestros enlaces, básicamente le decimos al navegador, mira a esos dos puntos finales de la API, realizaremos solicitudes en el futuro, así que ¿por qué no estableces la conexión justo al comienzo de la aplicación y luego podemos ahorrar tiempo de conexión más tarde?

2. Optimización de las solicitudes HTTP con prioridad de fetch

Short description:

Esta sección trata sobre la paralelización de bloqueos de conexión, la prioridad de las solicitudes HTTP y el uso de la prioridad de fetch para optimizar la pintura más grande y significativa de una imagen. El ejemplo demuestra la mejora en el tiempo de carga y la importancia de tener la pintura más grande y significativa al principio. La siguiente optimización implica aprovechar la prioridad de fetch en las solicitudes HTTP.

en adelante. Esto se demuestra en la parte inferior de la imagen y se puede ver que ambos bloqueos de conexión ahora se paralelizan desde el principio y todo el gráfico es mucho más corto. Lo siguiente, y esto es lo nuevo y genial, es la prioridad de esas solicitudes HTTP. Nuevamente, en este gráfico se muestra una versión no optimizada en la parte superior, alguna ejecución de script, algunas solicitudes de recursos A, solicitudes de recursos B y luego la renderización. Por supuesto, la renderización de una imagen es más importante que ejecutar algún script o solicitar algunos recursos que se utilizan más adelante. Entonces, lo primero que debemos hacer es hacer que todos los bloques de script amarillos sean asíncronos y no bloqueantes. Esto se puede lograr mediante los atributos defer, preload, o prefetch. Deferir scripts significa mover ese script al final de la cola y continuar con el procesamiento, con el análisis de su HTML. Y la precarga y el prefetch básicamente significa que intento obtener datos al principio de, digamos, la parte que no es visible en la página. Entonces, la precarga sería precargar recursos que se acceden en un momento posterior en esta misma página. Y el prefetch podría significar precargar algunas cosas que se utilizan después de una navegación. Con esas tres cosas ya podemos avanzar mucho, pero hay otra característica realmente genial y muy útil: la prioridad de fetch. Con la prioridad de fetch, básicamente podemos determinar qué solicitudes HTTP tienen más prioridad que otras y quiero usarla para actualizar la pintura más grande y significativa de una imagen. Si observamos este fragmento de código aquí, vemos dos enlaces que solicitan algunas imágenes de héroe y una de esas dos imágenes es más importante que la otra. Normalmente, solo por el orden del contenido HTML, primero solicitaríamos la imagen de héroe 1 y más adelante la imagen de héroe 2. Pero ahora, con la prioridad de fetch, podemos indicarle al navegador que la segunda imagen, aunque sea más adelante en el tiempo, tiene más prioridad que la primera y el navegador cambiaría la ejecución de esas dos solicitudes HTTP y solicitaría la segunda antes en el tiempo. ¿Cómo se vería eso en la práctica? Tomé ObservableHQ como un sitio web ficticio y lo que vemos aquí es una imagen de video, o como dije, una pequeña imagen de un video que comenzaremos a reproducir más adelante y esto es definitivamente la pintura más grande y significativa, la parte más importante que el usuario debería ver al principio. Al aplicar algunos ajustes al HTML y usar la precarga, obtenemos la siguiente mejora. Entonces, lo que ven en la parte superior es la primera línea de esta tira de películas que muestra la página predeterminada y la segunda línea de esta tira de películas muestra cuál es el resultado de mi optimización. Hay dos cosas diferentes. En primer lugar, todo el gráfico ahora es mucho más corto. Básicamente, pasé de 7 segundos en total a 4.5 segundos. Pero la parte realmente importante e interesante aquí es que la pintura más grande y significativa ahora está presente al principio. Pasé de 7 segundos de la pintura más grande y significativa, que se puede ver aquí en la parte superior, a 2.5 segundos. Esto también es visible aquí en el diagrama detallado en la parte inferior. Y pueden ver que la imagen es realmente lo primero visible y luego de eso hay algunas solicitudes. Pero la imagen siempre es visible y brinda una experiencia de usuario muy agradable para los usuarios que desean consumir este video o al menos quieren ver un primer vistazo.

La siguiente optimización que quiero hacer es aprovechar la prioridad de fetch en las solicitudes HTTP. Entonces, cuando usas la API de fetch, ahora también puedes darle una importancia a esta solicitud HTTP y esto se hace simplemente aplicando otra configuración como se muestra aquí. Con esta técnica, veamos qué hice en la práctica con ella. Si observamos la página, vemos dos contenidos dinámicos diferentes en la página.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Una Guía del Comportamiento de Renderizado de React
React Advanced Conference 2022React Advanced Conference 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
React es una biblioteca para "renderizar" UI a partir de componentes, pero muchos usuarios se encuentran confundidos acerca de cómo funciona realmente el renderizado de React. ¿Qué significan términos como "renderizado", "reconciliación", "Fibers", y "committing"? ¿Cuándo ocurren los renderizados? ¿Cómo afecta el Contexto al renderizado, y cómo las bibliotecas como Redux causan actualizaciones? En esta charla, aclararemos la confusión y proporcionaremos una base sólida para entender cuándo, por qué, y cómo React renderiza. Veremos: - Qué es realmente el "renderizado" - Cómo React encola los renderizados y el comportamiento de renderizado estándar - Cómo se utilizan las claves y los tipos de componentes en el renderizado - Técnicas para optimizar el rendimiento del renderizado - Cómo el uso del contexto afecta al comportamiento del renderizado - Cómo las bibliotecas externas se integran en el renderizado de React
Depuración Web Moderna
JSNation 2023JSNation 2023
29 min
Depuración Web Moderna
Top Content
Pocos desarrolladores disfrutan depurando, y la depuración puede ser compleja para las aplicaciones web modernas debido a los múltiples marcos, lenguajes y bibliotecas utilizados. Pero, las herramientas de desarrollo han avanzado mucho en facilitar el proceso. En esta charla, Jecelyn profundizará en el estado moderno de la depuración, las mejoras en DevTools y cómo puedes usarlas para depurar tus aplicaciones de manera confiable.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
¿Demasiado JavaScript te está agobiando? Los nuevos marcos que prometen no usar JavaScript parecen interesantes, pero tienes una aplicación React existente que mantener. ¿Qué tal si Qwik React es tu respuesta para un inicio de aplicaciones más rápido y una mejor experiencia de usuario? Qwik React te permite convertir fácilmente tu aplicación React en una colección de islas, que pueden ser renderizadas en el servidor y rehidratadas con retraso, e incluso en algunos casos, se puede omitir la rehidratación por completo. Y todo esto de manera incremental sin una reescritura.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
¡React 18! ¡Funciones concurrentes! Tal vez ya hayas probado las nuevas APIs como useTransition, o tal vez solo hayas oído hablar de ellas. Pero, ¿sabes cómo React 18 logra las mejoras de rendimiento que trae consigo? En esta charla, echemos un vistazo bajo el capó de las características de rendimiento de React 18: - Cómo React 18 reduce el tiempo que tu página permanece congelada (también conocido como TBT) - Qué sucede exactamente en el hilo principal cuando ejecutas useTransition() - Cuál es la trampa con las mejoras (¡no hay torta gratis!), y por qué Vue.js y Preact se negaron rotundamente a lanzar algo similar
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Nuestra comprensión del rendimiento y la experiencia del usuario ha evolucionado mucho a lo largo de los años. Las herramientas de desarrollo web necesitan evolucionar de manera similar para asegurarse de que sean centradas en el usuario, accionables y contextuales donde se refiere a las experiencias modernas. En esta charla, Addy te guiará a través de cómo Chrome y otros han estado pensando en este problema y qué actualizaciones han estado haciendo a las herramientas de rendimiento para reducir la fricción para construir grandes experiencias en la web.
Optimización de juegos HTML5: 10 años de aprendizaje
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Optimización de juegos HTML5: 10 años de aprendizaje
Top Content
El motor de juegos de código abierto PlayCanvas está construido específicamente para el navegador, incorporando 10 años de aprendizaje sobre optimización. En esta charla, descubrirás la salsa secreta que permite a PlayCanvas generar juegos con tiempos de carga increíblemente rápidos y tasas de fotogramas sólidas como una roca.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
React, TypeScript y TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
Featured WorkshopFree
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
WorkshopFree
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
Depuración del Rendimiento de React
React Advanced Conference 2023React Advanced Conference 2023
148 min
Depuración del Rendimiento de React
Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Veía una interacción lenta, probaba una optimización aleatoria, veía que no ayudaba, y seguía probando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Hacía una grabación en Chrome DevTools o React Profiler, la examinaba, intentaba hacer clic en cosas al azar, y luego la cerraba frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos cómo analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, cubriremos el rendimiento de interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Master Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Master Patrones de JavaScript
Workshop
Adrian Hajdin
Adrian Hajdin
Durante este masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debe conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final del masterclass, los participantes ganarán confianza en su capacidad para escribir código JavaScript de alta calidad que perdure en el tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento profesional y las oportunidades de avance en la industria del software