Савети и најбоље праксе за побољшање перформанси апликација са подлогом
У претходним чланцима сте сазнали за фазе извршавања и ток позива података, уобичајене изворе спорих перформанси и уобичајена питања и решења у вези са перформансама у апликацијама са подлогом. Такође можете имати користи ако следите савете и најбоље праксе у овом чланку да бисте побољшали перформансе апликација које креирате.
Ограничавање везе података
Немојте додавати више од 30 веза у једној апликацији. Апликације подстичу нове кориснике да се пријаве на сваки конектор, тако да сваки додатни конектор повећава време потребно за покретање апликације. Док се апликација покреће, сваки конектор захтева ресурсе процесора, меморије и пропусног опсега мреже када апликација захтева податке из тог извора.
Перформансе апликације можете брзо да измерите тако што ћете укључити Алатке за програмере у програму Microsoft Edge или Google Chrome док се покреће апликација. Веома је вероватно да вашој апликацији треба дуже од 15 секунди да врати податке ако често захтева податке из више од 30 веза. Свака додата веза се појединачно рачуна у овом ограничењу, без обзира на повезани тип извор података—као што су Microsoft Dataverse или SQL Server табеле или листе креиране у услузи Microsoft Lists.
Ограничавање броја контрола
Немојте додавати више од 500 контрола у једној апликацији. Power Apps генерише објектни модел HTML документа за приказивање сваке контроле. Што више контрола додате, то је више времена потребно услузи Power Apps да генерише садржај.
У неким случајевима можете постићи исти резултат и покренути апликацију брже ако користите галерију уместо појединачних контрола. Поред тога, можда ћете желети да смањите број типова контрола на истом екрану. Неке контроле (као што су PDF прегледач, табела података и комбиновани оквир) повлаче велике скрипте извршења и захтевају дуже време да се прикажу.
Оптимизујте својство OnStart
Користите функцију ClearCollect да локално кеширате податке ако се то не мења током корисничке сесије. Такође, користите функцију Истовремено за истовремено учитавање извора података; ово може упола смањити време потребно за учитавање података. Још информација: Истовремена функција у услузи Power Apps
Без функције Истовремено, следећа формула учитава сваку од четири табеле једну по једну:
ClearCollect( Product, '[SalesLT].[Product]' );
ClearCollect( Customer, '[SalesLT].[Customer]' );
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
Ово понашање можете потврдити у алаткама за програмере вашег прегледача, као што је приказано на следећој слици.
Исту формулу можете затворити у функцију Concurrent да бисте смањили укупно време које је операцији потребно:
Concurrent(
ClearCollect( Product, '[SalesLT].[Product]' ),
ClearCollect( Customer, '[SalesLT].[Customer]' ),
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ))
Овом променом апликација паралелно преузима табеле, као што је приказано на следећој слици.
Напомена
За више информација о проблемима у вези перформансама и решењима повезаним са OnStart својством, прочитајте потребно је подешавање OnStart догађаја.
Савет
Препоручујемо коришћење својства App.StartScreen пошто поједностављује покретање апликација и повећава перформансе апликације.
Кеширање података проналажења
Користите функцију Set да локално кеширате податке из табела за проналажење како бисте избегли поновљено преузимање података из извора. Ова техника оптимизује перформансе ако се подаци вероватно неће мењати током сесије. Као што је приказано у овом примеру, подаци се једном преузимају из извора, а затим се локално референцирају све док корисник не затвори апликацију.
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. екран, па самим тим нема утицаја на перформансе.
Коришћење делегирања
Тамо где је могуће, користите функције које делегирају обраду података на извору података уместо преузимања података на локални уређај за обраду. Ако апликација мора да обрађује податке локално, операција захтева много више процесорске снаге, меморије и мрежног пропусног опсега посебно ако је скуп података велик.
Савет
Да бисте сазнали више о функцијама које је могуће делегирати које су подржане одређеним конекторима, идите на чланак документација за конектор.
За пример функција које је могуће делегирати, размотрите колону ID дефинисану као тип података Број у листи креираној у услузи Microsoft Lists. Формуле у следећем примеру ће вратити резултате како се очекивало. Међутим, прву формулу је могуће делегирати, док другу није могуће делегирати.
Формула | Да ли може да се делегира? |
---|---|
Filter ('List data source', ID = 123 ) |
Да |
Filter(`List data source', ID ="123") |
Не |
Пошто претпостављамо да је колона ID у услузи SharePoint дефинисан са типом података Број, вредност са десне стране треба да буде нумеричка променљива уместо променљиве ниске. У супротном, та неусклађеност може утицати да формула не може да се делегира.
Употреба функција које није могуће делегирати и неодговарајућег ограничења реда података за упите које није могуће делегирати може негативно утицати на перформансе апликације. Још информација: Објашњење делегирања у апликацији са подлогом
Коришћење одложеног оптерећења
Укључите функцију прегледа за одложено учитавање ако апликација има више од 10 екрана, без правила и многе контроле које се налазе на више екрана и директно су повезане са < ДИЦТ__извор података > дата соурце</ДИЦТ__извор података >. Ако направите ову врсту апликације и не омогућите ову функцију, перформансе апликације могу да трпе јер контроле на свим екранима морају бити попуњене чак и на екранима који нису отворени. Такође, сви екрани апликације морају се ажурирати кад год се промени извор података, на пример када корисник дода запис.
Рад са великим скуповима података
Користите изворе података и формуле које можете делегирати како бисте одржавали добре перформансе апликација док корисници могу да приступају свим потребним информацијама, а треба и да избегавате достизање ограничења броја редова података од 2000 за упите који се не могу делегирати. За колоне за евидентирање података на којима корисници могу претраживати, филтрирати или сортирати податке, користите индексе на колонама како је описано у изворима података као што су SQL Server или SharePoint.
Напомена
За додатне информације о томе како велики скупови података могу довести до уобичајених проблема са перформансама на различитим платформама, прочитајте Велики скупови података полако се учитавају на различитим платформама.
Редовно поново објављујте апликације
Подстичемо произвођаче да редовно објављују своје апликације. Пошто се Power Apps платформа континуирано оптимизује и примењује, ваша апликација се поново генерише унутра најновијих оптимизација платформе када је поново објавите.
Избегавајте понављање исте формуле на више места
Ако више својстава покреће исту формулу (поготово ако је она сложена), размислите о томе да је поставите једном, а затим референцирајте излаз првог својства у каснијим. На пример, не постављајте својство DisplayMode контрола А, Б, В, Г и Д на исту сложену формулу. Уместо тога, подесите својство DisplayMode контроле А на комплексну формулу, подесите својство DisplayMode контроле Б на резултат својства DisplayMode контроле А, и тако редом за контроле В, Г и Д.
Омогућавање DelayOutput на свим контролама за унос текста
Ако имате више формула или правила која референцирају вредност контроле типа унос текста, подесите својство DelayedOutput те контроле на тачно. Својство Текст те контроле ће се ажурирати тек након што се зауставе притискани тастери унети у брзом низу. Формуле или правила неће се покренути толико пута, а перформансе апликација ће се побољшати.
Избегавајте употребу Form.Updates у правилима и формулама
Ако упућујете на вредност корисничког уноса у правилу или формули помоћу променљиве Form.Updates
, понавља се преко свих картица података обрасца и сваки пут креира запис. Да бисте учинили апликацију ефикаснијом, референцирајте вредност директно са картице података или вредности контроле.
Користите DelayItemLoading и окретно дугме учитавања за побољшање перформанси у Галерији
У зависности од конфигурације, галерији може требати више времена да генерише видљиве редове. Постоји неколико начина за побољшање перформанси.
- Поједноставите предложак. На пример, размислите о смањењу броја контрола, референци на претраживања.
- Галерије са сложеним предлошцима могу имати погодности од тога што имају DelayItemLoading подешен на тачно и LoadingSpinner подешен на LoadingSpinner.Controls. Ова промена ће побољшати искуство када је време приказивања дуже. DelayItemLoading такође ће одложити приказивање предложака, што ће омогућити да се остатак екрана прикаже брже јер се и екран и галерија не надмећу за ресурсе.
Омогућавање учитавање апликације унапред за боље перформансе
Можете опционално унапред учитати апликацију да бисте побољшали перформансе.
Пријавите се у Power Apps, а затим у менију изаберите Апликације.
Изаберите Још радњи (...) за апликацију коју желите да делите, а затим изаберите Поставке.
На табли Подешавања пребаците ставку Унапред учитај апликацију за побољшане перформансе на Да. Апликација ће се затим унапред учитати.
Да би промене ступиле на снагу за апликације уграђене у Teams, уклоните апликацију и додајте је поново у Teams.
Напомена
На тај начин се компајлираним средствима апликације може приступити путем неауторизованих крајњих тачака да би се омогућило учитавање пре потврде идентитета. Међутим, корисници и даље могу да користе апликацију само за приступ подацима путем линија спајања тек када се потврда идентитета и ауторизација заврше. Ово понашање обезбеђује да подаци које апликација преузме из извора података неће бити доступни неовлашћеним корисницима. Преведена средства апликације укључују колекцију ЈаваСцрипт датотека које садрже текст ауторизован у контролама апликација (као што су ПЦФ контроле), средства медија (као што су слике), име апликације и УРЛ адресу окружења у којој се апликација налази.
Генерално гледано, апликације би требало да преузимају медије и информације из извора података путем веза. Ако медији и информације морају да се додају у апликацију, без доласка из везе, а сматра се осетљивим можда ћете желети да онемогућите ову поставку. Напомена, онемогућавање ове поставке ће довести до тога да корисници још мало чекају да приступе апликацији.
Подаци апликације ускладиштени на уређају
Да бисте омогућили корисницима да брже преузимају детаље апликације када се апликација покрене, одређени подаци се локално складиште на уређају у кешу прегледача. Ускладиштене информације укључују детаље о апликацији, окружењу и вези. Ти подаци ће остати ускладиштени у прегледачу на основу ограничења складиштења сваког прегледача. Да бисте обришли ускладиштене податке, погледајте упутства за сваки прегледач.
Следећи кораци
Прегледајте стандарде кодирања за максимизовање перформанси апликације и лакше одржавање апликација.
Такође погледајте
Разумевање фаза извршавања апликације са подлогом и тока позивања података
Уобичајени проблеми и решења у вези са перформансама апликације са подлогом
/Уобичајени извори спорих перформанси за апликацију са подлогом
Уобичајени проблеми и решења за услугу Power Apps
Решавање проблема са покретањем за Power Apps
Напомена
Можете ли нам рећи о својим жељеним поставкама језика у документацији? Испуните кратку анкету. (имајте на уму да је ова анкета на енглеском језику)
Анкета ће трајати око седам минута. Не прикупљају се лични подаци (изјава о приватности).