Introducción

Completado

Las primeras impresiones son importantes. El tiempo que tarda la aplicación en mostrar la primera pantalla u otros objetos visuales, como los indicadores de progreso, es fundamental en la primera impresión de los usuarios de una aplicación. Al arrancar, la aplicación ejecuta varios pasos de preparación de la presentación de la primera pantalla: la autenticación, la obtención de metadatos, el procesamiento de OnStart y la representación de pantallas.

Captura de pantalla de un diagrama de flujo donde se ilustran los pasos del proceso de arranque de las operaciones de autenticación, obtención de metadatos, procesamiento de OnStart y representación de pantallas.

  • Autenticar: gestiona todas las solicitudes de autenticación de las conexiones que están configuradas para la aplicación. Si se eliminan los conectores que no se usan, se puede reducir el número de mensajes y acelerar el proceso.

  • Obtener metadatos: recupera metadatos, como la versión de la plataforma de Microsoft Power Apps en la que se ejecuta la aplicación o los orígenes de donde se deben recuperar los datos.

  • Procesamiento de OnStart: evalúa las fórmulas que ha configurado en la propiedad OnStart. La optimización del rendimiento de este procesamiento repercute directamente en la mejora del tiempo de carga de la aplicación.

  • Representar pantallas: se prepara y se presenta la primera pantalla al usuario. Las fórmulas OnVisible especificadas se implementan primero. La optimización de fórmulas y la minimización del número de controles en pantalla puede mejorar el tiempo de carga.

En este módulo se explica cómo evaluar el tiempo de carga de una aplicación y cómo establecer estrategias para mejorarlo.

Evaluar el tiempo de carga de una aplicación

Para evaluar el tiempo de carga de una aplicación, es interesante empezar por establecer una base de referencia para la duración de la carga de la aplicación. Puede realizar esta tarea midiendo el tiempo de arranque desde el inicio de la aplicación hasta el momento en que crea que la aplicación se puede usar. Use un cronómetro para medir el tiempo que transcurre entre el momento en que se inicia la aplicación y el momento en que crea que una persona puede comenzar a usarla. Más adelante, en este módulo, se abordarán las herramientas que puede utilizar para medir los detalles del rendimiento en el tiempo de carga y explorarlos en profundidad. Le recomendamos que, con cada actualización de la aplicación, realice una nueva evaluación para comparar la nueva versión con la base de referencia anterior y detectar posibles aumentos significativos del tiempo de carga.

Medir el tiempo de inicio le ayudará a obtener tiempos reales; sin embargo, tenga en cuenta a los usuarios y piense en preguntarles cuál es su percepción del rendimiento de la aplicación. En ocasiones, la aplicación puede tardar en cargarse solo unos cuantos segundos, pero los usuarios pueden tener la sensación de que tarda mucho más porque no consideran que la aplicación se puede utilizar. Por ejemplo, esta situación puede producirse porque la aplicación, después de mostrar la primera pantalla, sigue cargando datos y actualizando información aunque los usuarios ya estén interactuando con ella. Los enfoques de solución de estos dos problemas son diferentes. Si intenta mejorar el tiempo de carga, generalmente puede obtener datos imperativos que le indiquen en qué puntos pasa más tiempo la aplicación. Si intenta mejorar la percepción del usuario, tiene que observar a la persona que usa la aplicación para comprender cómo la usa y qué cambios podrían mejorar su percepción. Los pequeños cambios, como agregar mensajes de texto para iniciar la interacción o cambiar la pantalla de inicio para persistir y volver a cargar los registros más recientes, pueden cambiar la percepción.

Normalmente, detectará los componentes que ralentizan la aplicación en la propiedad OnStart de la aplicación o en la propiedad OnVisible de la primera pantalla. Al optimizar o aplazar el trabajo que se realiza en estas propiedades, puede acelerar el tiempo de carga. Algunas de estas técnicas se explicarán más adelante en este módulo.

Si visualiza los análisis de su aplicación desde el portal del creador, se incluirán los análisis Tiempo hasta llegar a la primera pantalla y Tiempo hasta llegar a la primera pantalla sin incluir la configuración de la conexión.

Captura de pantalla del análisis de la aplicación Tiempo hasta llegar a la primera pantalla y Tiempo hasta llegar a la primera pantalla sin incluir la configuración de conexión

Los datos proporcionados corresponden a los últimos 30 días y pueden ser útiles para proporcionar un resumen del rendimiento de la aplicación.

La herramienta de revisión de Power Apps es otra opción útil para evaluar aplicaciones. Esta herramienta de código abierto está empaquetada como solución que puede importar a su entorno de Microsoft Dataverse. Una vez que haya importado la herramienta, podrá utilizarla para evaluar aplicaciones de su entorno. También puede cargar archivos .msapp para evaluarlos. La revisión automática puede comprobar la aplicación con una lista de comprobación personalizable de prácticas recomendadas y detectar numerosos problemas habituales que pueden repercutir en el tiempo de arranque de la aplicación y en el rendimiento en general de las aplicaciones. Cuando la revisión automática finalice, verá una lista en la que se muestre dónde funciona bien la aplicación, así como los elementos procesables en los que puede mejorar.

Captura de pantalla de la lista de comprobación de revisión del código generada por la herramienta de revisión de Power Apps

Además de ver los resultados en la aplicación, puede enviarlos por correo electrónico, lo que puede ser útil si no es el creador de la aplicación.

Las reglas comunes que la herramienta puede verificar y que pueden repercutir en el tiempo de arranque son, entre otras:

  • Uso de la función Concurrent: piense en usar la función Concurrent en solicitudes de datos independientes en paralelo.

  • Indicadores de configuración de la aplicación: revise la configuración de la aplicación. Compruebe que la carga retrasada y la selección de columna explícita estén activadas.

  • Delegación: asegúrese de que las operaciones ClearCollect y Filter sean delegables.

  • Optimización de activos: revise la optimización de tamaño y la compresión de activos incorporados.

  • Estrategia de carga de datos: revise la estrategia de carga de datos OnStart y OnVisible. Evite las llamadas de datos en OnStart. Vaya a OnVisible cuando sea posible. Asegúrese de que solo las llamadas de datos importantes bloqueen la interacción del usuario con la UI durante la carga inicial de la pantalla de inicio.

  • Dependencias entre pantallas: asegúrese de que los elementos repetidos de la UI estén encapsulados en los componentes (por ejemplo, menús, encabezado, pie de página).

Revisar la configuración de la aplicación

La configuración de la aplicación puede influir significativamente en el rendimiento de la aplicación; por lo tanto, revise la configuración de la aplicación y su estado habilitado en cada actualización de la aplicación. Es posible que las aplicaciones más antiguas no tengan habilitadas automáticamente las últimas opciones de configuración de la aplicación para garantizar que la nueva opción no interrumpa las aplicaciones ya existentes. Es posible que también haya habilitado una configuración para intentar resolver un problema y que, al terminar, se haya olvidado de desactivar la configuración. Un buen ejemplo de ese escenario es la opción Depurar aplicación publicada. Habilitar esta opción permite que se muestre más información de depuración al usar el supervisor de aplicaciones para solucionar problemas de la aplicación publicada. Cuando esta opción está habilitada, puede ser perjudicial para el rendimiento y no debe dejarse activada para uso de producción.

Captura de la pantalla de depuración de la aplicación publicada con la opción General resaltada

También se puede considerar la opción Límite de filas de datos. Esta opción establece el número máximo de filas que se recuperarán de una conexión basada en servidor cuando no se admita la delegación. De forma predeterminada, este valor es 500 y puede ser cualquier valor entre 1 y 2000. Para evitar los problemas de delegación en las aplicaciones, es normal que se aumente este valor. Este aumento puede generar problemas inesperados cuando un entorno de desarrollo contenga conjuntos de datos mucho más pequeños que los de producción. Por ejemplo, si el Límite de filas de datos está establecido en 2000, la siguiente expresión de Límite de filas de datos puede que solo cargue previamente algunas filas de un entorno de desarrollo.

ClearCollect(colDesks,Desks)

La misma aplicación en un entorno de producción con un conjunto de datos completamente rellenado puede recuperar las 2000 filas completas. En consecuencia, la aplicación se cargará mucho más lentamente en producción que en desarrollo. Con frecuencia, es mejor trabajar para eliminar advertencias de delegación que aumentar este valor.

En aplicaciones más antiguas, la opción Habilitar la función Navigate en App.OnStart puede estar habilitada. Esta opción le permite utilizar la función Navigate() en la propiedad App.OnStart, pero los resultados de la primera pantalla no se presentarán hasta que no se hayan evaluado todas las expresiones de App.OnStart. En aplicaciones más recientes, este enfoque no está permitido y tendrá que utilizar la propiedad App.StartScreen en su lugar. Las propiedades OnStart y StartScreen se tratarán en profundidad más adelante en este módulo. Si su aplicación tiene esta configuración habilitada, piense en actualizarla para adoptar el nuevo enfoque y deshabilitar la configuración, lo que puede mejorar el tiempo de carga.

Además de las opciones mencionadas anteriormente, la categoría Próximas características tiene más opciones que debe revisar. Esta categoría tiene tres secciones: Versión preliminar, Experimental y Retirado.

La nueva configuración empieza como Experimental y se gradúa en Versión preliminar a medida que madura. Las características experimentales le permiten probar una nueva característica, pero no están diseñadas para aplicaciones de producción. Estas características están desactivadas de forma predeterminada y tiene que habilitarlas. Se han dedicado considerables esfuerzos a mejorar el rendimiento de la aplicación, así que siga supervisando esta área para conocer las próximas características.

Normalmente, la configuración de la sección Versión preliminar está activada de forma predeterminada para las nuevas aplicaciones. Estas características se encuentran en sus etapas finales de prueba antes de convertirse en una configuración estándar habilitada para todas las aplicaciones. En el caso de las aplicaciones ya existentes, debe participar para habilitar esta configuración si desea usarla. En algunos casos, participar puede requerir introducir cambios menores en el uso de fórmulas.

Si trabaja en un problema de rendimiento, probar algunas de las próximas características podría proporcionar información sobre si serán útiles para abordar sus problemas. En caso afirmativo, esperar a que maduren las características podría ser una alternativa a la refactorización sin su beneficio.

Límites y limitación

Cada conector puede tener su propia limitación y su propio límite de datos recuperados. Además, los límites de protección de servicio están implementados en el nivel de la plataforma. Asegúrese de conocer los límites de los conectores que use en la aplicación. Las aplicaciones que se encuentran con estos límites durante el arranque pueden experimentar una ralentización en la carga de la aplicación.

Usar una imagen de carga

El uso de una imagen de carga o un indicador de progreso durante operaciones largas de la aplicación puede mejorar la percepción del usuario.

Captura de pantalla de un GIF animado donde se muestra un mensaje de carga de círculo giratorio que indica una operación de carga larga.

La forma más sencilla de utilizar una imagen de carga durante la carga de la aplicación consiste en utilizar un componente que tenga una imagen giratoria. Puede encontrar una imagen precompilada en el repositorio GitHub de herramientas de Power Apps.. Puede importarlo y ponerlo en la pantalla inicial, encima de los demás controles. Luego puede usar una variable para controlar la visibilidad del componente. En la imagen siguiente se muestra un ejemplo de cómo establecer la propiedad visible en el valor de una variable showLoader.

Captura de pantalla de la propiedad Visible del control de precargador que se establece en la variable showLoader.

Luego, en App.OnStart, puede activar la imagen de carga antes de cargar los datos y, a continuación, desactivar la imagen después de que se carguen los datos.

Set(showLoader, true);

ClearCollect(colDesks, Desks);

ClearCollect(colDeskFeatures, 'Desk Features');

Set(showLoader, false);

Captura de pantalla de la propiedad App.OnStart establecida en Set(showLoader, true); ClearCollect(colDesks, Desks); ClearCollect(colDeskFeatures,'Desk Features'); Set(showLoader, false

Si bien el uso de una imagen de carga no da más velocidad a la aplicación, proporciona información visual y puede ser útil para que el usuario comprenda que la aplicación está funcionando en segundo plano.

El resto de este módulo explora otras técnicas de identificación y mejora del rendimiento de carga de la aplicación.