Съвети и най-добри практики за подобряване на ефективността на приложенията на платното
В предишните статии научихте за фази на изпълнение и поток на обаждане на данни, често срещани източници на бавно изпълнение и общи проблеми и решения за изпълнението в приложения за платно. Можете също така да се възползвате, като следвате съветите и най-добрите практики в тази статия, за да подобрите производителността на приложенията, които създавате.
Ограничете връзките за данни
Не добавяйте повече от 30 връзки в едно приложение. Приложенията подканват новите потребители да влязат във всеки конектор, така че всеки допълнителен конектор увеличава времето, необходимо на приложението да стартира. Докато приложението работи, всеки конектор изисква ресурси на процесора, памет и мрежова честотна лента, когато приложението изисква данни от този източник.
Можете бързо да измерите ефективността на приложението си, като включите Инструменти за програмисти в Microsoft Edge или Google Chrome, докато стартирате приложението. Приложението ви е по-вероятно да отнеме повече от 15 секунди, за да върне данни, ако често изисква данни от повече от 30 връзки. Всяка добавена връзка се брои индивидуално в това ограничение, независимо от свързания тип източник на данни—като Microsoft Dataverse или таблици на SQL Server или списъци, създадени с помощта на Microsoft Lists.
Ограничете броя на контролите
Не добавяйте повече от 500 контроли в едно приложение. Power Apps генерира обектен модел на HTML документ, за да изобрази всяка контрола. Колкото повече контроли добавите, от толкова повече време за генериране ще се нуждае Power Apps.
В някои случаи можете да постигнете същия резултат и да накарате приложението да стартира по-бързо, ако използвате галерия вместо отделни контроли. Освен това може да искате да намалите броя на контролните типове на един и същ екран. Някои контроли (като PDF зрителя, таблицата с данни и комбинираното поле) извличат големи скриптове за изпълнение и отнемат повече време за изобразяване.
Оптимизирайте свойството OnStart
Използвайте функцията ClearCollect за кеширане на данни локално, ако не се променят по време на потребителската сесия. Също така използвайте Concurrent функция за едновременно зареждане на източници на данни; това може да намали наполовина времето, необходимо на приложението за зареждане на данни. Повече информация:функция Concurrent в Power Apps
Без функцията Concurrent, следната формула зарежда всяка от четирите таблици една по една:
ClearCollect( Product, '[SalesLT].[Product]' );
ClearCollect( Customer, '[SalesLT].[Customer]' );
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
Можете да потвърдите това поведение в Инструменти за програмисти за вашия браузър, както е показано на следващото изображение.
Можете да приложете същата формула във функцията Едновременно за намаляване на общото време, от което се нуждае операцията:
Concurrent(
ClearCollect( Product, '[SalesLT].[Product]' ),
ClearCollect( Customer, '[SalesLT].[Customer]' ),
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ))
С тази промяна приложението извлича таблиците паралелно, както е показано на следващото изображение.
Бележка
За повече информация относно проблемите с производителността и резолюциите, свързани с OnStart, прочетете Събитието OnStart се нуждае от настройка.
Съвет
Препоръчваме да използвате App.StartScreen свойство, тъй като опростява стартирането на приложението и повишава производителността на приложението.
Данни за търсене на кеш
Използвайте функцията Задаване за кеширане на данни от локални таблици за търсене, за да се избегне многократното извличане на данни от източника. Тази техника оптимизира производителността, ако данните вероятно няма да се променят по време на сесия. Както е показано в следния пример, данните се извличат от източника веднъж и след това се препращат локално, докато потребителят затвори приложението.
Set(CustomerOrder, Lookup(Order, id = “123-45-6789”));
Set(CustomerName, CustomerOrder.Name);
Set(CustomerAddress, CustomerOrder.Address);
Set(CustomerEmail, CustomerOrder.Email);
Set(CustomerPhone, CustomerOrder.Phone);
Този метод е по-полезен за данни като информация за контакт, стойности по подразбиране или потребителска информация, която не се променя често. Можете също да използвате тази техника с функциите По подразбиране и Потребител.
Избягвайте контролната зависимост между екраните
За да се подобри производителността, екраните на приложението се зареждат в паметта само колкото са необходими. Тази оптимизация може да бъде възпрепятствана, ако например е зареден екран 1 и една от неговите формули използва свойството на контрола от екран 2. Сега екранът 2 трябва да бъде зареден, за да изпълни зависимостта, преди да може да се покаже екран 1. Представете си, че екран 2 има зависимост от екрана 3, който има друга зависимост от екрана 4 и т.н. Тази верига на зависимост може да доведе до зареждане на много екрани.
Поради тази причина избягвайте зависимостите от формули между екраните. В някои случаи можете да използвате глобална променлива или колекция, за да споделяте информация между екраните.
Има изключение: В предишния пример си представете, че единственият начин за показване на екран 1 е чрез навигиране от екран 2. Тогава екран 2 вече е бил зареден в паметта, когато трябва да се зареди екран 1. Не е необходима допълнителна работа, за да се изпълни зависимостта за екран 2 и следователно няма въздействие върху производителността.
Използвайте делегиране
Когато е възможно, използвайте функции, които делегират обработката на данни на източник на данни, вместо да изтегляте данни на локалното устройство за обработка. Ако приложението трябва да обработва данни локално, операцията изисква много повече процесорна мощ, памет и мрежова честотна лента, особено ако наборът от данни е голям.
Съвет
За да научите за делегируеми функции, поддържани от конкретни конектори, отидете на Документация за съединителя.
За пример на делегируеми функции, помислете за колона с идентификатор, дефинирана като Тип данни Число в списъка, създаден с Microsoft Lists. Формулите в следващия пример ще върнат резултатите, както се очаква. Първата формула обаче може да се делегира, докато втората не може да се делегира.
Формула | Възможност за делегиране? |
---|---|
Filter ('List data source', ID = 123 ) |
Да |
Filter(`List data source', ID ="123") |
Не |
Тъй като предполагаме, че колоната ИД в SharePoint се дефинира с типа данни Число, дясната стойност трябва да бъде числова променлива вместо променлива. В противен случай това несъответствие може да задейства формулата да не може да се делегира.
Използването на Използване на функции, които не могат да се детайлират, и неподходящо ограничение на ред данни за заявки, които не могат да бъдат делегирани може да има неблагоприятен ефект върху работата на приложението. Още информация : Разбиране на делегирането в приложение за платно
Използвайте забавено зареждане
Включете функцията за визуализация за забавено зареждане, ако приложението ви има повече от 10 екрана, без правила и много контроли, които са на няколко екрана и са директно свързани с източник на данни. Ако създадете този тип приложение и не активирате тази функция, производителността на приложението може да пострада, защото контролите на всички екрани трябва да се попълват дори на екрани, които не са отворени. Също така, всички екрани на приложението трябва да се актуализират при промяна на източник на данни, например когато потребителят добави запис.
Работа с големи масиви от данни
Използвайте източници на данни и формули, които могат да бъдат делегирани, за да поддържате вашите приложения да се представят добре, докато потребителите имат достъп до цялата информация, от която се нуждаят, и избягвайте да удряте лимита на редовете с данни от 2000 за заявки, които не могат да бъдат делегирани. За колони за запис на данни, на които потребителите могат да търсят, филтрират или сортират данни, използвайте индекси на колони, както е описано от източниците на данни като SQL Server или SharePoint.
Бележка
За допълнителна информация за това как големите набори от данни могат да причинят често срещани проблеми с производителността на различни платформи, прочетете Големи набори от данни се зареждат бавно на различни платформи.
Публикувайте повторно приложения редовно
Производителите се насърчават да публикуват редовно своите приложения. Тъй като Power Apps платформата непрекъснато се оптимизира и внедрява, приложението ви се регенерира в рамките на най-новите оптимизации на платформата, когато го препубликувате.
Избягвайте да повтаряте една и съща формула на много места
Ако няколко свойства изпълняват една и съща формула (особено ако е сложна), помислете да я зададете веднъж и след това да препратите изхода на първото свойство в следващите. Например, не задавайте свойството DisplayMode на контролите A, B, C, D и E със същата сложна формула. Вместо това задайте свойството DisplayMode на А към сложната формула, задайте свойството DisplayMode на B към резултата от свойството DisplayMode на А и т.н. за C, D и E.
Активирайте DelayOutput за всички контроли за въвеждане на текст
Ако имате множество формули или правила, които препращат към стойността на контролата Въвеждане на текст, задайте свойството DelayedOutput на този контрол да е вярно. Свойството Текст на този контрол ще се актуализира само след спиране на натиснатите клавиши, въведени бързо. Формулите или правилата няма да се стартират толкова пъти и ефективността на приложението ще се подобри.
Избягвайте използването на Form.Updates в правила и формули
Ако препращате към въведена от потребителя стойност в правило или формула с помощта на променлива Form.Updates
, тя преглежда всички карти с данни на формуляра и създава запис всеки път. За да направите приложението си по-ефективно, препратете стойността директно от картата с данни или контролната стойност.
Използвайте въртящ механизъм DelayItemLoading и Зареждане, за да подобрите производителността в Gallery
В зависимост от конфигурацията, Галерията може да отнеме повече време, за да изобрази видимите редове. Има няколко начина за подобряване на производителността.
- Опростяване на шаблона. Например, помислете за намаляване на броя на контролите, препратки към справки.
- Галериите със сложни шаблони могат да се възползват от наличието DelayItemLoading зададено на вярно и LoadingSpinner зададено на LoadingSpinner.Controls. Тази промяна ще подобри възприеманото преживяване, когато времето за изобразяване е по-дълго. DelayItemLoading също ще отложи изобразяването на шаблони, което ще позволи на останалата част от екрана да се изобрази по-бързо, тъй като и екранът, и галерията не се конкурират за ресурси.
Активиране на предварително зареждане на приложение за подобрена производителност
По желание можете предварително да заредите приложението си, за да увеличите производителността.
Влезте в Power Apps и след това изберете Приложения в менюто.
Изберете Повече действия (...) за приложението, което искате да споделите, и след това изберете Настройки.
В панела за настройки превключете Предварително зареждане на приложение за подобрена производителност на Да. След това приложението ще се зареди предварително.
За да влязат в сила промените за вградените в Teams приложения, премахнете и добавете отново приложението си в Teams.
Бележка
Това прави компилираните активи на приложението достъпни чрез неудостоверени крайни точки, за да се даде възможност за зареждането им преди удостоверяване. Потребителите обаче все още могат да използват приложението ви за достъп до данни чрез конектори само след завършване на удостоверяването и оторизацията. Това поведение гарантира, че данните, които приложението извлича от източници на данни, няма да бъдат достъпни за неупълномощени потребители. Компилираните активи на приложенията включват колекция от JavaScript файлове, съдържащи текст, създаден в контролите на приложенията (като PCF контроли), медийни активи (като изображения), името на приложението и URL адреса на средата, в която се намира приложението.
По принцип приложенията трябва да извличат медии и информация от източници на данни, чрез връзки. Ако към приложението трябва да се добавят мултимедия и информация, без да идват от връзка, и то се счита за поверително, може да искате да деактивирате тази настройка. Имайте предвид, че забраняването на тази настройка ще накара потребителите да чакат малко по-дълго, за да получат достъп до дадено приложение.
Данни за приложения, съхранявани на устройството ви
За да позволите на потребителите да извличат подробности за приложението по-бързо, когато приложението стартира, определени данни се съхраняват локално на устройството ви в кеша на браузъра. Информацията, която се съхранява, включва подробности за приложението, средата и връзката. Тези данни ще останат съхранени в браузъра въз основа на ограниченията за съхранение на всеки браузър. За да изчистите съхранените данни, вижте инструкциите за всеки браузър.
Следващи стъпки
Прегледайте стандарти за кодиране за увеличаване на ефективността на приложението и запазване на приложенията по-лесни за поддръжка.
Вижте също
Разбиране на фазите на изпълнение на приложения за платно и поток от обаждания за данни
Обичайни проблеми и решения при производителността на приложение за платно
Често срещани източници на бавна производителност за приложение за платно
Общи проблеми и решения за Power Apps
Отстраняване на проблеми при стартиране за Power Apps
Бележка
Можете ли да ни споделите повече за езиковите си предпочитания за документацията? Попълнете кратко проучване. (имайте предвид, че това проучване е на английски език)
Проучването ще отнеме около седем минути. Не се събират лични данни (декларация за поверителност).