Prepararse para solucionar problemas
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Crear registros de perfil de desempeño.
- Inspeccionar la pila de llamadas para encontrar problemas.
- Demostrar cómo se selecciona una parte de un registro de perfil.
- Usar el Administrador de tareas de Chrome para finalizar procesos.
Componentes web Lightning de solución de problemas de desempeño
El desempeño viene de la perspectiva de la rapidez del sitio. El tiempo de carga transcurrido (EPT) es una métrica de desempeño que Salesforce utiliza en Lightning para medir el tiempo de carga de las páginas. La idea detrás de esta métrica es cronometrar cuánto tarda en cargarse una página para estar en “estado utilizable” para que un usuario pueda interactuar con ella de manera efectiva. El objetivo de la mayoría de las páginas es tardar menos de 3 segundos.
Solucionar los problemas de desempeño de los componentes web Lightning puede llevarlo hacia varias direcciones. EPT es un indicador de alto nivel del desempeño de las páginas. Para profundizar en los problemas de desempeño, hay tres áreas principales a tener en cuenta.
- Desempeño de la red
- Desempeño del navegador
- Personalización y complejidad de la página
Antes de comenzar
Las funciones de las herramientas para desarrolladores son similares en la mayoría de los navegadores. En este módulo, nos centramos en Chrome DevTools.
Suponemos que su entorno de desarrollo de Salesforce DX está configurado y que está cómodo utilizándolo para crear componentes web Lightning e implementarlos en una organización. Si todavía no está familiarizado con este proceso, complete el proyecto Inicio rápido: Componentes web Lightning antes de continuar en este módulo.
Este módulo depende en gran medida de su experiencia con Chrome DevTools del módulo anterior de esta ruta: Solución de problemas de componentes web Lightning. De hecho, si recién completó esa insignia, su zona de pruebas debería estar lista con el código de GitHub que se necesita para este módulo.
Si terminó la insignia Solución de problemas de componentes web Lightning, verifique que tenga el código más reciente de GitHub.
- En Visual Studio Code, abra el proyecto troubleshoot-lwc.
- Haga clic en File (Archivo) > Open (Abrir) (macOS) o File (Archivo) > Open Folder (Abrir carpeta) (Windows) y seleccione el directorio troubleshoot-lwc.
- Abra la paleta de comandos. Para ello, pulse Ctrl+Mayús+P (Windows) o Cmd+Mayús+P (macOS).
- Introduzca
git
.
- Seleccione Git: Pull (Extraer).
- En el directorio force-app/main/default, abra el directorio permissionsets.
- Verifique que exista el archivo Bad_Bunch_Full_Access.permissionset-meta.xml.
- Haga clic con el botón derecho en la carpeta default en force-app/main.
- Seleccione SFDX: Deploy Source to Org (SFDX: Implementar fuente en la organización).
- Haga clic en View (Ver) > Terminal.
- Asigne el conjunto de permisos Bad Bunch Full Access al usuario predeterminado. Para ello, debe ejecutar este comando en el terminal:
sf org assign permset -n Bad_Bunch_Full_Access
- Pase a la sección Comenzar con un navegador limpio a continuación.
Configurar el entorno de solución de problemas
En primer lugar, debe configurar un Trailhead Playground con algunos componentes web Lightning y prepararlo para solucionar problemas.
¿Todo listo para pasar a la práctica con los componentes web Lightning?
No existe un reto práctico en este módulo, pero puede probar los pasos en su Trailhead Playground. Así es como debe acceder a su zona de pruebas. En primer lugar, asegúrese de que inició sesión en Trailhead. A continuación, haga clic en su avatar de usuario de la esquina superior derecha de esta página y seleccione Hands-on Orgs (Organizaciones de prácticas) desde el menú desplegable. Haga clic en Launch (Iniciar) junto a la organización que desea abrir. O bien si quiere crear una nueva zona de pruebas, haga clic en Create Playground (Crear Playground).
Habilitar el modo de depuración
Este paso hace que solucionar problemas de código sea mucho más fácil. Con el modo de depuración habilitado en la organización el código no se minimiza. Por lo tanto, los nombres de las variables siguen siendo los mismos y la estructura general del código se mantiene, lo que hace que solucionar problemas sea mucho más fácil.
- En Setup (Configuración), ingrese
Debug Mode
(Modo de depuración) en el cuadro Quick Find (Búsqueda rápida) y, a continuación, seleccione Debug Mode (Modo de depuración).
- Seleccione la casilla junto a su usuario.
- Haga clic en Enable (Activar).
Obtener los componentes web Lightning desde GitHub
- Complete las instrucciones en el archivo readme del repositorio de GitHub.
- En Visual Studio Code, asigne el conjunto de permisos Bad Bunch Full Access al usuario predeterminado. Para ello, debe ejecutar el siguiente comando en el terminal.
sf org assign permset -n Bad_Bunch_Full_Access
Su entorno ahora está listo para solucionar problemas con DevTools del navegador.
Comenzar con un navegador limpio
- Abra un navegador de Chrome en modo de incógnito o invitado.
Esto garantiza que Chrome se ejecuta en un estado limpio, sin extensiones instaladas. Las extensiones pueden crear ruido en sus mediciones de desempeño.
- Haga clic en el ícono Customize and control Google Chrome (Personalizar y controlar Google Chrome) (
) y seleccione New Incognito Window (Nueva ventana de incógnito).
- Abra su zona de pruebas.
- Asegúrese de que Debug Mode (Modo de depuración) esté activado para su usuario.
Esto también mostrará el EPT en el navegador.
Arreglar la inmovilización o el bloqueo del navegador de Chrome
Los ejemplos del componente web Lightning de esta insignia pueden hacer que el navegador quede inmovilizado e incluso que Chrome se bloquee. Hay una herramienta ingeniosa que le permite cerrar la ficha si no responde. Echemos un vistazo.
- Haga clic con el botón derecho en el área vacía de la sección de fichas del navegador de Chrome y seleccione Task Manager (Administrador de tareas).
- Haga clic en uno de los elementos del Administrador de tareas para ver la opción End Process (Finalizar proceso).
Ahora que tenemos una forma de salir de un proceso estancado, pasemos a lo que nos interesa.
Abrir la ficha DevTools Performance (Desempeño de DevTools)
Observemos la aplicación Bad Bunch con la ficha Chrome DevTools Performance (Desempeño de Chrome DevTools).
- Desde el Iniciador de aplicación (
) en su zona de pruebas, encuentre y abra Bad Bunch.
- Haga clic con el botón derecho en la ventana del navegador y haga clic en Inspect (Inspeccionar).
- Haga clic en Customize and control DevTools (Personalizar y controlar DevTools) (
) y seleccione el lado que desea usar para anclar. (Las imágenes en este módulo muestran a DevTools desanclado en una ventana aparte).
Tener DevTools en una ventana por separado otorga mejor acceso a todos los datos mientras soluciona problemas.
- Seleccione la ficha Performance (Desempeño).
Opciones de desempeño
Hay muchas opciones e información que se puede recopilar en el área de desempeño. Estas son algunas de las que cubriremos.
Botón |
Acción |
Descripción |
---|---|---|
Registro |
Comienza un nuevo registro de perfil de toda la actividad de la página que ocurre como resultado de sus interacciones. |
|
Start profiling and reload page (Comenzar el registro y volver a cargar la página) |
Comienza un nuevo registro de perfil cuando vuelve a cargar la página analizando el desempeño de una página mientras se está cargando. Detiene el registro automáticamente una vez que la página está cargada. |
|
Clear (Borrar) |
Borra todos los registros de perfil. Asegúrese de guardar los perfiles que desee para analizar después. |
|
Load profile (Cargar perfil) |
Carga los perfiles que se registraron y guardaron previamente. |
|
Save profile (Guardar perfil) |
Guarda un perfil registrado. |
|
Show recent timeline sessions (Mostrar sesiones de cronología recientes) |
Enumera los registros de perfil para esta sesión de DevTools. Utilice esta opción para alternar entre los registros. Si cierra DevTools, se borran todos los registros. Antes de cerrar DevTools, asegúrese de guardar los perfiles para analizar después. |
|
Capture screenshots (Realizar capturas de pantalla) |
Realiza capturas de pantalla de todos los marcos durante el registro. Asegúrese de desactivar esta opción cuando esté trabajando con datos confidenciales y desee registrar el perfil. |
|
Show memory timeline (Mostrar cronología de memoria) |
Si esta opción está activada cuando está mirando un perfil registrado, se muestran las métricas de memoria para ese registro. |
|
Collect garbage (Recopilar elementos no utilizados) |
Fuerza la recopilación de elementos no utilizados mientras se registra un perfil. |
|
Capture settings (Configuración de captura) |
Abre opciones adicionales de configuración, como las opciones de regulación para la red y la CPU. |
|
Network throttling (Regulación de red) |
En Capture settings (Configuración de captura), permite establecer el nivel de regulación de red necesario para resolver problemas. |
|
CPU throttling (Regulación de CPU) |
En Capture settings (Configuración de captura), permite establecer el nivel de regulación de CPU necesario para resolver problemas. La regulación se relaciona con las capacidades de su computadora. |
Registrar un perfil
- Con la aplicación Bad Bunch abierta, en la ficha DevTools Performance (Desempeño de DevTools), haga clic en Record (Registro) (
).
Observe que el ícono Record (Registro) se pone de color rojo y la ventana de estado muestra Status Profiling (Perfil de estado) y el botón Stop (Detener).
- En la aplicación Bad Bunch, haga clic en Do Something (Hacer algo).
Espere a que se muestre el tiempo que le llevó la ejecución. Debería tardar un poco, y el navegador básicamente se bloquea mientras realiza la solicitud.
- Ahora, haga clic en Do Something Faster (Hacer algo más rápido).
Mostrará un tiempo mucho más rápido.
- En el panel Performance (Desempeño), haga clic en Stop (Detener) en la ventana de estado.
El registro se detiene. Luego, se procesan los datos y se muestran los resultados en el panel Performance (Desempeño).
¡Es muchísima información!
- Los colores para el gráfico de CPU se usan en el panel Summary (Resumen) en los gráficos.
Observe el color que llegó al límite máximo en el gráfico de CPU. Eso es un indicador claro de la existencia de posibles problemas. Si observamos el color correspondiente en el panel Summary (Resumen), vemos que Scripting (Secuencia de comandos) superó el límite máximo.
- Abra la sección Main (Principal) para ver la pila de llamadas de JavaScript tal como se realizaron.
Las barras son eventos y el tamaño muestra el tiempo que llevó ejecutarlos. Cuando se organiza la pila, el evento superior ocasiona el evento inferior. Comprender la naturaleza de un solo hilo de JavaScript es fundamental para solucionar problemas de desempeño de LWC.
- Seleccione uno de los eventos para mostrar los detalles en el panel Summary (Resumen).
Observe que este, en particular, es el evento aura invokeListenersByPlacement (es el archivo aura_proddebug.js en la línea 516). Esto forma parte del código base de Lightning, no de lo que está tratando de solucionar.
- Seleccione uno de los eventos runExpensiveLoop.
Parece que se ejecutó un par de veces, pero puede ser confuso. DevTools usa la heurística para determinar la forma en la que se mostrarán los resultados. Sin embargo, este es nuestro código, no un evento de aura.
- En el panel Summary (Resumen), haga clic en el vínculo al archivo example1_Loop.js; lo llevará al panel Sources (Fuentes) con el código resaltado con el tiempo de ejecución.
Puede ver en la línea 99 que el análisis de la cadena JSON en el bucle está demorando demasiado.
- Vuelva a la ficha Performance (Desempeño) y asegúrese de hacer clic en un espacio en blanco en la sección Main (Principal) para borrar la selección de runExpensiveLoop.
- Junto a la ficha Summary (Resumen), seleccione Bottom-Up (Ascendente).
Esta es otra forma de ver qué está llevando más tiempo ejecutar. El panel Bottom-Up (Ascendente) solo muestra eventos para la parte seleccionada del registro. Veamos el botón Do Something Faster (Hacer algo más rápido).
Seleccionar la parte del registro con la que desea trabajar
- Mueva el mouse hacia la derecha o hacia la izquierda en la sección Overview (Visión general), el área con gráficos de FPS, CPU y NET, para mostrar la captura de pantalla para ese tiempo en el registro.
- Haga clic y arrastre el mouse por la sección del registro que desea seleccionar.
Seleccione el área del botón Do Something Faster (Hacer algo más rápido).
Como puede ver, es una sección mucho más pequeña del registro.
- Haga clic en el evento runOptimalLoop para ver los detalles en el panel Summary (Resumen). Es probable que deba seleccionar la ficha Summary (Resumen) si todavía está mostrando el panel Bottom-Up (Ascendente).
- Haga clic en el vínculo example1_Loop.js para volver a cambiar al panel Sources (Fuentes).
Puede ver que runOptimalLoop es similar a runExpensiveLoop, excepto que el análisis de JSON ocurre fuera del buclefor
(para) en la línea 112. Ejecutar el análisis una sola vez fuera del buclefor
en la línea 112 solo lleva ~0.1 s; como se puede ver en la columna lateral. En la línea 99, donde el análisis se ejecutó una y otra vez en el bucle, tardó un total de ~4343.3 ms. ¡Es un aumento de 4 MILLONES por ciento si se compara con la posición del análisis dentro del método! Es posible que sus tiempos de registro varíen con respecto a estos resultados.
- Haga clic en Save profile (Guardar perfil) (
) para descargar este perfil y guardar una copia. Seleccione una ubicación para el archivo JSON guardado y haga clic en Save (Guardar).
Puede usar Load profile (Cargar perfil) () para cargarlo más adelante.
Veremos algunas otros ejemplos de componentes web Lightning en la próxima unidad.
Recursos
- Blog para desarrolladores de Salesforce: EPT o tiempo de carga transcurrido
- Blog para desarrolladores de Salesforce: Mejores prácticas de desempeño de componentes web Lightning
- Trailhead: Optimización del desempeño de Lightning Experience
- Desarrolladores de Chrome: Analizar el desempeño del tiempo de ejecución
- Desarrolladores de Chrome: Referencia a las funciones de desempeño