Näpunäiteid ja parimaid tavasid lõuendirakenduste jõudluse parendamiseks

Eelmistes artiklites olete teada saanud levinumatest käivitamisfaasidest ja andmenõudluse voost, levinumatest aeglase jõudluse allikatest ja levinumatest jõudluse probleemidest ja lahendusest lõuendirakendustes. Selle artikli näpunäiteid ja parimaid tavasid saate kasutada ka oma loovrakenduste jõudluse suurendamiseks.

Andmeühenduste piiramine

Ärge looge samast rakendusest ühendust enama kui 30 andmeallikaga. Rakendused paluvad uutel kasutajatel igasse konnektorisse sisse logida, seega iga lisa konnektor suurendab rakenduse käivitamiseks vajaminevat aega. Rakenduse töötamise ajal vajab iga konnektor CPU ressursse, mälu ja võrgu läbilaskevõimet, kui rakendus taotleb selle allika andmeid.

Rakenduse toimivust saate kiiresti mõõta, lülitades rakenduse käitamise ajal sisse arendaja tööriistad Microsoft Edge või GoogleChrome'is. Kui teie rakendusel kulub andmete tagastamiseks suurem kui 15 sekundit, kui ta küsib OneDrive sageli andmeid rohkem kui 30 andmeallikast (nt Microsoft Dataverse, Azure SQL, SharePoint ja Excel).

Juhtelementide arvu piiramine

Ärge lisage samasse rakendusse rohkem kui 500 juhtelementi. Power Apps loob HTML-dokumendi objekti mudeli iga juhtelemendi renderdamiseks. Mida rohkem juhtelemente lisate, seda rohkem Power Apps aega vajab.

Mõnel juhul saate saavutada sama tulemuse ja lasta rakendusel kiiremini käivitada, kui kasutate üksikute juhtelementide asemel galeriid. Lisaks võite soovida vähendada samal ekraanil olevate juhtelementide tüüpide arvu. Teatud juhtelemendid (nt PDF-i vaatur, andmetabel ja liitväli) tõmbavad suuri käivitusskripte ja neil kulub renderdamiseks rohkem aega.

Atribuudi OnStart optimeerimine

Kasutage ClearCollect funktsiooni salvestamaks andmed kohalikku vahemällu kui see ei muutu kasutussessiooni käigus. Samuti, kasutadge Samaaegset funktsiooni et laadida andmeallikatest simultaanselt; see võib vähendada aega, mida rakendus vajab, et laadida andmeid poole võrra. Lisateave: Samaaegne funktsioon Power Apps

Ilma Samaaegselt funktsioonita laadib järgmine valem kõik neli tabelit ükshaaval.

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

Seda käitumist saate kinnitada brauseri arendustööriistades, nagu on näidatud järgmisel pildil.

Diagramm, kus on näidatud, et neli tabelit laaditakse üksteise järel.

Võite toimingu jaoks vajaliku üldise aja vähendamiseks kaasata sama valemi funktsioonis Samaaegne.

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

Selle muudatusega toob rakendus tabelid paralleelselt, nagu on näidatud järgmisel pildil.

Diagramm, kus on näidatud, et neli tabelit laaditakse korraga.

Märkus

Lisateavet OnStart-iga seotud jõudlusprobleemide ja -lahenduste kohta leiate teemast OnStart-sündmus vajab häälestamist.

Näpunäide

Soovitame kasutada atribuuti App.StartScreen, kuna see lihtsustab rakenduse käivitamist ja suurendab rakenduse jõudlust.

Vahemälu otsinguandmed

Kasutage funktsiooni Määra, et salvestada otsingutabelite andmed kohapeal vahemällu, et vältida andmete korduvat toomist allikast. See meetod optimeerib jõudlust, kui andmed tõenäoliselt seansi ajal ei muutu. Nagu näidatud järgnevas näites, on andmed allikast toodud korra ja siis viidatud kohalikult kuni kasutaja sulgeb rakenduse.

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

See meetod on kasulikum näiteks kontaktteabe, vaikeväärtuste või kasutajateabe puhul, mida sageli ei muudeta. Seda meetodit saate kasutada ka funktsioonidega vaikesätted ja kasutaja.

Ekraanide vahelise kontrollisõltuvuse äratundmine

Jõudluse parandamiseks laaditakse rakenduse ekraanid mälusse ainult vastavalt vajadusele. See optimeerimine võib olla ülekoormatud, kui näiteks ekraani 1 laaditakse ja üks selle valemitest kasutab ekraanilt 2 juhtelemendi atribuuti. Nüüd tuleb enne ekraani 1 kuvamist laadida sõltuvuse täitmiseks ekraan 2. Kujutage ette, et ekraanil 2 on sõltuvus ekraaniga 3, millel on omakorda sõltuvus ekraanil 4 jne. See sõltuvuse kett võib põhjustada paljude ekraanide laadimist.

Seetõttu vältige valemite sõltuvust ekraanide vahel. Mõnel juhul saate kasutada teabe ekraanide vahel jagamiseks kasutada globaalset muutujat või kogumit.

On üks erand: Kujutage eelmises näites ette, et ainuke viis ekraani 1 kuvamiseks on navigeerida ekraanilt 2. Siis on ekraan 2 juba mälus laaditud, kui ekraani 1 laaditakse. 2. ekraani sõltuvuse täitmiseks ei ole vaja täiendavat tööd ja seetõttu ei ole sel jõudlusele mingit mõju.

Delegeerimise kasutamine

Võimaluse korral kasutage funktsioone, mis andmete töötlemiseks kohalikku seadmesse toomise asemel delegeerivad andmete töötlemise andmeallikale. Kui rakendus peab andmeid töötlema kohalikku arvutisse, nõuab toiming palju rohkem töötlemisvõimsust, mälu ja võrgu läbilaskevõimet, eriti kui andmehulk on suur.

Näpunäide

Konkreetsete toetatud eraldusfunktsioonide kohta leiate teavet konnektori dokumentatsioonist.

Kustutatavate funktsioonide näitena kaaluge ID-veergu, mis on määratletud kui SharePoint loendis andmetüüp Arv. Järgmises näites toodud valemid tagastavad tulemused eeldatud viisil. Esimene valem on eraldatav, kui teine on mitteeraldatav.

Valem Kas on eraldatav?
Filter ('SharePoint list data source', ID = 123 ) Ja
Filter(`SharePoint list data source', ID ="123") No

Kuna eeldame, et SharePoint ID-veerg on määratletud andmetüübiga Arv, peaks parempoolne väärtus olema stringimuutuja asemel arvmuutuja. Vastasel juhul võib selline mittevastavus põhjustada valemi mitteeraldatavana.

Mitteeraldatavate funktsioonide kasutamine ja ebasobivate andmeridade limiit mitteeraldatavates päringutes võib olla ebasoodne mõju rakenduse jõudlusele. Lisateave: Mõista delegeerimist lõuendirakendusse

Viivitusega laadimise kasutamine

Lülita sisse eksperimentaalne funktsioon hilinenud laadimise jaoks kui su rakendusel on rohkem kui 10 ekraanija palju juhtelemente, mis on mitmetel ekraanidel ja on otseselt seotud andmeallikaga. Kui koostate seda tüüpi rakendust ja ei luba seda funktsiooni, võib rakenduse jõudlus kannatada, sest ekraanide juhtelemendid peavad olema asustatud isegi ekraanidel, mis pole avatud. Samuti tuleb kõiki rakenduse ekraane värskendada iga kord, kui andmeallikas muutub, näiteks kui kasutaja lisab kirje.

Töö suurte andmehulkadega

Kasutage andmeallikaid ja valemeid, mida rakenduse hästi toimimise säilitamiseks delegeerida, samal ajal kui kasutajad pääsevad ligi kogu vajalikule teabele, ja vältige mitte delegeeritavatel päringutel andmeridade piirarvuni 2000 jõudmist. Andmekirje veergude puhul, kus kasutajad saavad andmeid otsida, filtreerida või sortida, kasutage veergude indekseid, nagu on kirjeldatud andmeallikates nagu SQL Server või SharePoint....

Märkus

Lisateavet selle kohta, kuidas mahukad andmekomplektid võivad põhjustada levinumaid jõudlusprobleeme erinevatel platvormidel, lugege Mahukad andmekomplektid laadivad aeglaselt erinevatele platvormidele.

Rakenduste regulaarne taasavaldamine

Tegijad julgustavad oma rakendusi regulaarselt avaldama. Kuna Power Apps platvormi optimeeritakse ja juurutatakse pidevalt, taastatakse teie rakendus uusimate platvormi optimeerimise raames, kui selle uuesti avaldate.

Sama valemi mitmes kohas kordamise vältimine

Kui mitu atribuuti käitavad sama valemit (eriti kui see on keerukas), kaaluge selle üks kord häälestamist ja seejärel järgmistes viitamist esimese atribuudi väljundile. Näiteks ärge häälestage juhtelementide A, B, C, D ja E atribuuti Kuvarežiim samale keerulisele valemile. Selle asemel häälestage juhtelemendi A atribuut Kuvarežiim keerulisele valemile, häälestage juhtelemendi B Kuvarežiim elemendi A atribuudi Kuvatõmmis tulemustele jne C, D ja E jaoks.

Väljundi viivituse lubamine kõikides tekstisisestuse juhtelementides

Kui teil on mitu valemit või reeglit, mis viitavad juhtelemendi Tekstisisend väärtusele, määrake selle juhtelemendi atribuut DelayedOutput (Viivitusega väljund) väärtusele tõene. Juhtelemendi Tekst väärtusi värskendatakse alles pärast seda, kui klahvivajutused on kiiresti sisestatud. Valemid või reeglid ei tööta nii mitu korda ja rakenduse jõudlus paraneb.

Reeglites ja valemites muutuja Form.Updates kasutamise vältimine

Kui viitate kasutaja sisendväärtusele reeglis või valemis kasutades Form.Updates muutujat, itereerib see kõik vormi andmekaardid ja loob iga kord kirje. Rakenduse tõhusamaks muutmiseks viidake andmekaardilt või juhtelemendi väärtusest andmekaardile otse.

Sõltuvalt konfiguratsioonist võib galerii nähtavate ridade renderdamine võtta rohkem aega. Jõudluse parendamiseks on paar võimalust.

  • Lihtsusta malli. Näiteks kaaluge juhtelementide arvu ja viidete arvu otsingutele.
  • Keerukate mallidega galeriid saavad kasu sellest, et DelayItemLoading on tõene ja LoadingSpinner väärtuseks on seatud LoadingSpinner.Controls. See muudatus muudab aja pikemaks muutmise korral rohkem üleliidse kogemuse. DelayItemLoading lükkab ka edasi mallide renderdamise, mis võimaldab ülejäänud ekraanil renderdada kiiremini, kuna nii kuva kui ka galerii ei võistle ressursside pärast.

Järgmised etapid

Rakenduse jõudluse maksimeerimiseks ja rakenduste hoolduse lihtsustamiseks vaadake läbi kodeerimise standardid.

Vt ka

Lõuendirakenduse käivitamisfaaside ja andmevoo mõistmine
Levinud jõudlusprobleemid ja lahendused
Levinumad allikad lõuendirakenduse väheses jõudluses
Ühised küsimused ja resolutsioonid Power Apps
Power Apps käivitusprobleemide tõrkeotsing