Saveti i najbolje prakse za poboljšanje performansi aplikacija sa podlogom
U prethodnim člancima ste saznali za faze izvršavanja i tok poziva podataka, uobičajene izvore sporih performansi i uobičajena pitanja i rešenja u vezi sa performansama u aplikacijama sa podlogom. Takođe možete imati koristi ako sledite savete i najbolje prakse u ovom članku da biste poboljšali performanse aplikacija koje kreirate.
Ograničavanje veze podataka
Ne povezujte se sa više od 30 izvora podataka iz iste aplikacije. Aplikacije podstiču nove korisnike da se prijave na svaki konektor, tako da svaki dodatni konektor povećava vreme potrebno za pokretanje aplikacije. Dok se aplikacija pokreće, svaki konektor zahteva resurse procesora, memorije i propusnog opsega mreže kada aplikacija zahteva podatke iz tog izvora.
Performanse aplikacije možete brzo da izmerite tako što ćete prilikom pokretanja aplikacije isključiti Developer Tools u programu Microsoft Edge Ili Google Chrome. Veća je verovatno da će aplikaciji biti potrebno više od 15 sekundi da vrati podatke ako često zahteva podatke iz više od 30 izvora podataka, kao što su Microsoft Dataverse, Azure SQL, SharePoint i Excel na OneDrive.
Ograničavanje broja kontrola
Ne dodajte više od 500 kontrola u istu aplikaciju. Power Apps HTML objektni model dokumenta za prikazivanje svake kontrole. Što više kontrola dodate, to je više vremena generacija Power Apps potrebno.
U nekim slučajevima možete postići isti rezultat i pokrenuti aplikaciju brže ako koristite galeriju umesto pojedinačnih kontrola. Pored toga, možda bi trebalo da smanjite broj tipova kontrola na istom ekranu. Neke kontrole (kao što su PDF pregledač, tabela podataka i kombinovani okvir) povlače velike skripte izvršenja i zahtevaju duže vreme da se prikažu.
Optimizujte svojstvo OnStart
Koristite funkciju ClearCollect da lokalno keširate podatke ako se to ne menja tokom korisničke sesije. Takođe, koristite funkciju Istovremeno za istovremeno učitavanje izvora podataka; ovo može upola smanjiti vreme potrebno za učitavanje podataka. Još informacija: Uporedna funkcija u Power Apps
Bez funkcije Istovremeno, sledeća formula učitava svaku od četiri tabele jednu po jednu:
ClearCollect( Product, '[SalesLT].[Product]' );
ClearCollect( Customer, '[SalesLT].[Customer]' );
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
Ovo ponašanje možete potvrditi u alatkama za programere vašeg pregledača, kao što je prikazano na sledećoj slici.

Istu formulu možete zatvoriti u funkciju Concurrent da biste smanjili ukupno vreme koje je operaciji potrebno:
Concurrent(
ClearCollect( Product, '[SalesLT].[Product]' ),
ClearCollect( Customer, '[SalesLT].[Customer]' ),
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ))
Ovom promenom aplikacija paralelno preuzima tabele, kao što je prikazano na sledećoj slici.

Napomena
Za više informacija o problemima u vezi performansama i rešenjima povezanim sa OnStart svojstvom, pročitajte potrebno je podešavanje OnStart događaja.
Savet
Preporučujemo korišćenje svojstva App.StartScreen pošto pojednostavljuje pokretanje aplikacija i povećava performanse aplikacije.
Keširanje podataka pronalaženja
Koristite funkciju Set da lokalno keširate podatke iz tabela za pronalaženje kako biste izbegli ponovljeno preuzimanje podataka iz izvora. Ova tehnika optimizuje performanse ako se podaci verovatno neće menjati tokom sesije. Kao što je prikazano u ovom primeru, podaci se jednom preuzimaju iz izvora, a zatim se lokalno referenciraju sve dok korisnik ne zatvori aplikaciju.
Set(CustomerOrder, Lookup(Order, id = “123-45-6789”));
Set(CustomerName, CustomerOrder.Name);
Set(CustomerAddress, CustomerOrder.Address);
Set(CustomerEmail, CustomerOrder.Email);
Set(CustomerPhone, CustomerOrder.Phone);
Ovaj metod je korisniji za podatke kao što su kontakt podaci, podrazumevane vrednosti ili korisničke informacije koje se ne menjaju često. Ovu tehniku takođe možete koristiti sa funkcijama Podrazumevane vrednosti i Korisnik.
Izbegavajte zavisnost kontrola između ekrana
Da bi poboljšali performanse, ekrani aplikacije se učitavaju u memoriju samo po potrebi. Ova optimizacija se može ometati ako se, na primer, učita 1. ekran i jedna od njegovih formula koristi svojstvo kontrole sa 2. ekrana. Sad se mora učitati ekran 2 da bi se ispunio zavisni element pre nego što ekran 1 bude mogao da se prikaže. Zamislite da ekran 2 ima zavisni element na ekranu 3, koji ima drugi zavisni element na ekranu 4, i tako dalje. Ovaj lanac zavisnosti može prouzrokovati učitavanje mnogih ekrana.
Iz tog razloga izbegavajte zavisnosti od formula između ekrana. U nekim slučajevima možete koristiti globalnu promenljivu ili kolekciju za deljenje informacija između ekrana.
Postoji izuzetak: U prethodnom primeru zamislite da je jedini način za prikazivanje 1. ekrana navigacijom sa 2. ekrana. Tada će se 2. ekran već učitati u memoriju kada treba učitati 1. ekran. Nije potreban nikakav dodatni rad da bi se ispunila zavisnost za 2. ekran, pa samim tim nema uticaja na performanse.
Korišćenje delegiranja
Tamo gde je moguće, koristite funkcije koje delegiraju obradu podataka na izvoru podataka umesto preuzimanja podataka na lokalni uređaj za obradu. Ako aplikacija mora da obrađuje podatke lokalno, operacija zahteva mnogo više procesorske snage, memorije i mrežnog propusnog opsega posebno ako je skup podataka velik.
Savet
Da biste saznali više o funkcijama koje je moguće delegirati koje su podržane određenim konektorima, idite na članak dokumentacija za konektor.
Za primer funkcija koje se mogu izbrisati, razmotrite kolonu "ID" koja je definisana kao tip podataka "Broj" u SharePoint liste. Formule u sledećem primeru će vratiti rezultate kako se očekivalo. Međutim, prvu formulu je moguće delegirati, dok drugu nije moguće delegirati.
| Formula | Da li može da se delegira? |
|---|---|
Filter ('SharePoint list data source', ID = 123 ) |
Da |
Filter(`SharePoint list data source', ID ="123") |
No |
Pošto pretpostavljamo da je kolona "ID" u SharePoint definisana tipom podataka "Broj", vrednost na desnoj strani bi trebalo da bude numerička promenljiva umesto promenljive niske. U suprotnom, ta neusklađenost može uticati da formula ne može da se delegira.
Upotreba funkcija koje nije moguće delegirati i neodgovarajućeg ograničenja reda podataka za upite koje nije moguće delegirati može negativno uticati na performanse aplikacije. Još informacija: Objašnjenje delegiranja u aplikaciji sa podlogom
Korišćenje odloženog opterećenja
Uključite eksperimentalnu funkciju za odloženo učitavanje ako vaša aplikacija ima više od 10 ekrana, nema pravila i mnogo kontrola koje se nalaze na više ekrana i koje su direktno povezane sa izvorom podataka. Ako napravite ovu vrstu aplikacije i ne omogućite ovu funkciju, performanse aplikacije mogu da trpe jer kontrole na svim ekranima moraju biti popunjene čak i na ekranima koji nisu otvoreni. Takođe, svi ekrani aplikacije moraju se ažurirati kad god se promeni izvor podataka, na primer kada korisnik doda zapis.
Rad sa velikim skupovima podataka
Koristite izvore podataka i formule koje možete delegirati kako biste održavali dobre performanse aplikacija dok korisnici mogu da pristupaju svim potrebnim informacijama, a treba i da izbegavate dostizanje ograničenja broja redova podataka od 2000 za upite koji se ne mogu delegirati. Za kolone zapisa podataka u kojima korisnici mogu da pretražuju, filtriraju ili sortiraju podatke koristite indekse u kolonama kao što su opisani izvori podataka kao što su SQL Server ili SharePoint....
Napomena
Za dodatne informacije o tome kako veliki skupovi podataka mogu dovesti do uobičajenih problema sa performansama na različitim platformama, pročitajte Veliki skupovi podataka polako se učitavaju na različitim platformama.
Redovno ponovo objavljujte aplikacije
Podstičemo proizvođače da redovno objavljuju svoje aplikacije. Budući da Power Apps platforma neprekidno optimizovana i raspoređena, vaša aplikacija se regeneriše u okviru najnovijih optimizacija platforme kada je ponovo objavite.
Izbegavajte ponavljanje iste formule na više mesta
Ako više svojstava pokreće istu formulu (pogotovo ako je ona složena), razmislite o tome da je postavite jednom, a zatim referencirajte izlaz prvog svojstva u kasnijim. Na primer, ne postavljajte svojstvo DisplayMode kontrola A, B, V, G i D na istu složenu formulu. Umesto toga, podesite svojstvo DisplayMode kontrole A na kompleksnu formulu, podesite svojstvo DisplayMode kontrole B na rezultat svojstva DisplayMode kontrole A, i tako redom za kontrole C, D i E.
Omogućavanje DelayOutput na svim kontrolama za unos teksta
Ako imate više formula ili pravila koja referenciraju vrednost kontrole tipa unos teksta, podesite svojstvo DelayedOutput te kontrole na tačno. Svojstvo Tekst te kontrole će se ažurirati tek nakon što se zaustave pritiskani tasteri uneti u brzom nizu. Formule ili pravila neće se pokrenuti toliko puta, a performanse aplikacija će se poboljšati.
Izbegavajte upotrebu Form.Updates u pravilima i formulama
Ako upućujete na vrednost korisničkog unosa u pravilu ili formuli pomoću promenljive Form.Updates, ponavlja se preko svih kartica podataka obrasca i svaki put kreira zapis. Da biste učinili aplikaciju efikasnijom, referencirajte vrednost direktno sa kartice podataka ili vrednosti kontrole.
Koristite DelayItemLoading i okretno dugme učitavanja za poboljšanje performansi u Galeriji
U zavisnosti od konfiguracije, galeriji može trebati više vremena da generiše vidljive redove. Postoji nekoliko načina za poboljšanje performansi.
- Pojednostavite predložak. Na primer, razmislite o smanjenju broja kontrola, referenci na pretraživanja.
- Galerije sa složenim predlošcima mogu imati pogodnosti od toga što imaju DelayItemLoading podešen na tačno i LoadingSpinner podešen na LoadingSpinner.Controls. Ova promena će poboljšati iskustvo kada je vreme prikazivanja duže. DelayItemLoading takođe će odložiti prikazivanje predložaka, što će omogućiti da se ostatak ekrana prikaže brže jer se i ekran i galerija ne nadmeću za resurse.
Sledeći koraci
Pregledajte standarde kodiranja za maksimalno povećanje učinka aplikacija i njihovo lakše održavanje.
Takođe pogledajte
Razumevanje faza izvršavanja aplikacije sa podlogom i toka pozivanja podataka
Uobičajeni problemi i rešenja u vezi sa performansama aplikacije sa podlogom
/Uobičajeni izvori sporih performansi za aplikaciju sa podlogom
Uobičajena pitanja i rešenja za Power Apps
Rešavanje problema sa pokretanjem za Power Apps