Consejos y procedimientos recomendados para mejorar el rendimiento de las aplicaciones de lienzo

Los artículos anteriores se trataron las fases de ejecución y el flujo de llamadas de datos, los orígenes habituales del rendimiento lento y los problemas de rendimiento habituales y sus soluciones en aplicaciones de lienzo. También puede beneficiarse siguiendo los consejos y las mejores prácticas de este artículo para mejorar el rendimiento de las aplicaciones que crea.

Límite de conexiones de datos

No agregue más de 30 conexiones en una aplicación. Las aplicaciones piden a los usuarios nuevos que inicien sesión en cada conector, por tanto, cada conector adicional aumenta la cantidad de tiempo que la aplicación necesita para iniciarse. Cuando se ejecuta una aplicación, cada conector requiere recursos de CPU, memoria y ancho de banda de red cuando la aplicación solicita datos a ese origen.

Para medir rápidamente el rendimiento de la aplicación, active Herramientas de desarrollo en Microsoft Edge o Google Chrome mientras se ejecuta la aplicación. Es más probable que su aplicación tarde más de 15 segundos en devolver datos si solicita datos de más de 30 conexiones con frecuencia. Cada conexión agregada se cuenta individualmente en este límite, independientemente del tipo de conexión origen de datos—tal como Microsoft Dataverse, tablas de SQL Server, o listas creadas usando Microsoft Lists.

Liminar el número de controles

No agregue más de 500 controles en una aplicación. Power Apps genera un modelo de objeto de documento HTML para representar cada control. Cuantos más controles agregue, más tiempo de generación necesita Power Apps.

En algunos casos, es posible llegar al mismo resultado y hacer que la aplicación se inicie más rápido si usa una galería en lugar de controles individuales. Además, puede que quiera disminuir el número de tipos de control en la misma pantalla. Algunos controles (como el visor de PDF, la tabla de datos y el cuadro combinado) incorporan scripts de ejecución de gran tamaño y tardan más en presentarse.

Optimización de la propiedad OnStart

Use la función ClearCollect para almacenar en caché local los datos si no cambian durante la sesión del usuario. Use también la función Concurrent para cargar orígenes de datos simultáneamente; esto puede reducir a la mitad la cantidad de tiempo que una aplicación necesita para cargar datos. Más información: Función Concurrent en Power Apps

Sin la función Concurrent, la siguiente fórmula cargará cada una de las cuatro tablas de una en una:

ClearCollect( Product, '[SalesLT].[Product]' );
ClearCollect( Customer, '[SalesLT].[Customer]' );
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )

Puede confirmar este comportamiento en las herramientas de desarrollo de su explorador, como se muestra en la siguiente imagen.

Diagrama que muestra las cuatro tablas que se cargan, una tras otra.

Puede incluir la misma fórmula en la función Concurrent para disminuir el tiempo total que necesita la operación:

Concurrent( 
    ClearCollect( Product, '[SalesLT].[Product]' ),
    ClearCollect( Customer, '[SalesLT].[Customer]' ),
    ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
    ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ))

Con este cambio, la aplicación recupera las tablas en paralelo, como se muestra en la siguiente imagen.

Diagrama que muestra las cuatro tablas que se cargan simultáneamente.

Nota

Para obtener más información sobre los problemas de rendimiento y las resoluciones relacionadas con OnStart, lea El evento OnStart necesita ajustes.

Sugerencia

Recomendamos usar la propiedad App.StartScreen, ya que simplifica el inicio de la aplicación y aumenta el rendimiento de la aplicación.

Almacenamiento en caché de datos de búsqueda

Use la función Set para almacenar en caché local datos provenientes de tablas de búsqueda con el fin de evitar tener que recuperar repetidamente los datos desde el origen. Esta técnica permite optimizar el rendimiento si es probable que los datos no cambien durante una sesión. Como se muestra en el siguiente ejemplo, los datos se recuperan desde el origen una sola vez y, después, se hace referencia a ellos de manera local hasta que el usuario cierra la aplicación.

Set(CustomerOrder, Lookup(Order, id = “123-45-6789”));
Set(CustomerName, CustomerOrder.Name);
Set(CustomerAddress, CustomerOrder.Address);
Set(CustomerEmail, CustomerOrder.Email);
Set(CustomerPhone, CustomerOrder.Phone);

Este método es más útil para datos como información de contacto, valores predeterminados o información de usuario que no cambia con frecuencia. También puede usar esta técnica con las funciones Predeterminados y Usuario.

Evitar la dependencia de control entre pantallas

Para mejorar el rendimiento, las pantallas de una aplicación se cargan en la memoria solo cuando son necesarias. Esta optimización puede verse obstaculizada si, por ejemplo, se carga la pantalla 1 y una de sus fórmulas utiliza la propiedad de un control de la pantalla 2. Ahora se debe cargar la pantalla 2 para cumplir la dependencia antes de que se pueda mostrar la pantalla 1. Imagine que la pantalla 2 tiene una dependencia en la pantalla 3, que tiene otra dependencia en la pantalla 4, y así sucesivamente. Esta cadena de dependencias puede hacer que se carguen muchas pantallas.

Por esta razón, evite las dependencias de fórmulas entre pantallas. En algunos casos, puede usar una variable o colección global para compartir información entre pantallas.

Hay una excepción: en el ejemplo anterior, imagine que la única forma de mostrar la pantalla 1 es navegando desde la pantalla 2. La pantalla 2 ya se habrá cargado en la memoria cuando se cargue la pantalla 1. No se necesita trabajo adicional para cumplir con la dependencia de la pantalla 2 y, por lo tanto, no hay impacto en el rendimiento.

Usar la delegación

Siempre que sea posible, use las funciones que delegan el procesamiento de datos al origen de datos en lugar de recuperar los datos en el dispositivo local para el procesamiento. Si una aplicación debe procesar localmente los datos, la operación requiere mucha más potencia de procesamiento, memoria y ancho de banda de red, especialmente si el conjunto de datos es grande.

Sugerencia

Para obtener información sobre las funciones delegables compatibles con conectores específicos, consulte la documentación del conector.

Para ver un ejemplo de funciones delegables, considere una columna de ID definida como tipo de datos Número en una lista creada usando Microsoft Lists. Las fórmulas del siguiente ejemplo devolverán los resultados esperados. Sin embargo, la primera fórmula es delegable mientras que la segunda no lo es.

Fórmula ¿Delegable?
Filter ('List data source', ID = 123 )
Filter(`List data source', ID ="123") No

Como suponemos que la columna id. en SharePoint se define con el tipo de datos Número, el valor del lado derecho debe ser una variable numérica en lugar de una variable de cadena. De lo contrario, esta discordancia puede provocar que la fórmula no sea delegable.

El uso de funciones no delegables y límite de filas de datos inadecuado para consultas no delegables puede tener un efecto adverso en el rendimiento de la aplicación. Más información: Comprender la delegación en una aplicación de lienzo

Usar la carga retrasada

Active la característica de vista previa para carga retrasada si la aplicación tiene más de 10 pantallas, ninguna regla y muchos controles que se encuentran en varias pantallas y que están directamente enlazados al origen de datos. Si crea este tipo de aplicación y no habilita esta característica, el rendimiento de la aplicación podría verse afectado porque se deben rellenar los controles que están en todas las pantallas, incluso en las pantallas que no están abiertas. Además, es necesario actualizar todas las pantallas de la aplicación cada vez que cambia el origen de datos, como ocurre cuando el usuario agrega un registro.

Trabajar con grandes conjuntos de datos

Use los orígenes de datos y las fórmulas que se pueden delegar para que las aplicaciones sigan funcionando correctamente mientras los usuarios pueden acceder a toda la información que necesitan y evite llegar al límite de 2000 filas de datos para las consultas que no se pueden delegar. Para las columnas de registros de datos en las que los usuarios pueden buscar, filtrar u ordenar datos, utilice índices en las columnas como se describe en las fuentes de datos, como servidor SQL o SharePoint.

Nota

Para obtener información adicional sobre cómo los grandes conjuntos de datos pueden causar problemas de rendimiento comunes en diferentes plataformas, lea Grandes conjuntos de datos que se cargan lentamente en diferentes plataformas.

Volver a publicar aplicaciones de manera habitual

Se anima a los creadores a publicar sus aplicaciones con regularidad. Como la plataforma Power Apps se optimiza e implementa continuamente, su aplicación se regenera dentro de las últimas optimizaciones de plataforma cuando la vuelve a publicar.

Evite repetir la misma fórmula en varios lugares.

Si varias propiedades ejecutan la misma fórmula (especialmente si es compleja), considere configurarla una vez y luego hacer referencia a los resultados de la primera propiedad en las siguientes. Por ejemplo, no establezca la propiedad DisplayMode de los controles A, B, C, D y E en la misma fórmula compleja. En su lugar, establezca la propiedad DisplayMode de A en la fórmula compleja, la propiedad DisplayMode de B en el resultado de la propiedad DisplayMode de A y así sucesivamente para C, D y E.

Habilitar DelayOutput en todos los controles Entrada de texto

Si tiene varias fórmulas o reglas que hacen referencia al valor de un control Entrada de texto, establezca la propiedad DelayedOutput de ese control en true. La propiedad Text de ese control se actualizará sólo después de que se hayan detenido las pulsaciones de teclas introducidas en rápida sucesión. Las fórmulas o reglas no se ejecutarán tantas veces y el rendimiento de la aplicación mejorará.

Evitar usar Form.Updates en reglas y fórmulas

Si hace referencia a un valor introducido por el usuario en una regla o fórmula mediante la variable Form.Updates, itera sobre todas las tarjetas de datos del formulario y crea un registro cada vez. Para que su aplicación sea más eficiente, haga referencia al valor directamente desde la tarjeta de datos o el valor del control.

Use el indicador giratorio DelayItemLoading y Loading para mejorar el rendimiento en la Galería

Según la configuración, la Galería puede tardar más en representar las filas visibles. Hay un par de formas de mejorar el rendimiento.

  • Simplifique la plantilla. Por ejemplo, considere la posibilidad de reducir el número de controles, referencias a búsquedas.
  • Las galerías con plantillas complejas pueden beneficiarse de tener DelayItemLoading ajustado a true y LoadingSpinner ajustado a LoadingSpinner.Controls. Este cambio mejorará la experiencia percibida cuando el tiempo de representación sea mayor. DelayItemLoading también diferirá la representación de las plantillas, lo que permitirá que el resto de la pantalla se procese más rápido, ya que tanto la pantalla como la galería no compiten por los recursos.

Habilitar Precargar aplicación para un rendimiento mejorado

Opcionalmente, puede precargar su aplicación para aumentar el rendimiento.

  1. Inicie sesión en Power Appsy, a continuación seleccione Aplicaciones en el menú.

  2. Seleccione Mas acciones (...) para la aplicación que desea compartir y luego seleccione Configuración.

  3. En el panel de Configuración, cambie Precargar aplicación para un rendimiento mejorado a . La aplicación se precargará.

Carga previa de aplicación para mejorar el rendimiento.

  1. Para que los cambios surtan efecto para las aplicaciones integradas en Teams, elimine y agregue su aplicación nuevamente a Teams.

    Nota

    Esto hace que los activos de aplicación compilados estén accesibles a través de puntos de conexión no autenticados para permitir cargarlos antes de la autenticación. Sin embargo, los usuarios solo pueden usar su aplicación para acceder a los datos a través de conectores únicamente después de que se completen la autenticación y la autorización. Este comportamiento garantiza que los datos que una aplicación recupera de orígenes de datos no estarán disponibles para usuarios no autorizados. Los activos de aplicación compilados incluyen una colección de archivos JavaScript que contienen texto creado en los controles de la aplicación (como controles PCF), activos multimedia (como imágenes), el nombre de la aplicación y la URL del entorno en el que reside la aplicación.

    En general, las aplicaciones deben recuperar medios e información de orígenes de datos, a través de conexiones. Si se deben agregar elementos multimedia e información a la aplicación, sin que procedan de una conexión, y se consideran confidenciales, es recomendable deshabilitar esta configuración. Tenga en cuenta que deshabilitar esta configuración provocará que los usuarios esperen un poco más para acceder a una aplicación.

Datos de aplicación almacenados en su dispositivo

Para permitir que los usuarios recuperen los detalles de la aplicación más rápido al iniciar la aplicación, determinados datos se almacenarán localmente en su dispositivo en el caché del navegador. La información que se almacenará incluye detalles de aplicación, entorno y conexión. Estos datos permanecerán almacenados en el navegador según los límites de almacenamiento de cada navegador. Para borrar los datos almacenados, consulte las instrucciones para cada navegador.

Pasos siguientes

Consulte las normas de codificación para maximizar el rendimiento de la aplicación y que las aplicaciones sean más fáciles de mantener.

Consultar también

Comprender las fases de ejecución de las aplicaciones de lienzo y el flujo de llamadas de datos
Problemas habituales de rendimiento de las aplicaciones de lienzo y sus soluciones
Fuentes comunes de rendimiento lento para una aplicación de lienzo
Problemas habituales y sus soluciones para Power Apps
Solución de problemas de inicio de Power Apps

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).