Tippek és bevált gyakorlatok a vászonalkalmazások teljesítményének javításához

Az előző cikkekben a végrehajtási fázisokat és az adathívások folyamatát, a lassú teljesítmény gyakori forrásait, valamint a vászonalapú alkalmazásokban gyakori teljesítményproblémákat és megoldásukat ismerhette meg. Az előnyére válhat az is, ha követi a cikkben olvasható tippeket és bevált gyakorlatokat a létrehozott alkalmazások teljesítményének növelése érdekében.

Adatkapcsolatok korlátozása

Ne adjon hozzá több mint 30 kapcsolatot ugyanahhoz az alkalmazáshoz. Az alkalmazások arra kérik az új felhasználókat, hogy jelentkezzenek be minden egyes összekötőre, így minden további összekötő növeli az alkalmazás indításához szükséges időtartamot. Az alkalmazás futtatása során minden összekötőnek CPU-erőforrásokra, memóriára és hálózati sávszélességre van szüksége, amikor az alkalmazás adatokat kér az adott forrástól.

Gyorsan mérheti alkalmazása teljesítményét, ha bekapcsolja a Microsoft Edge vagy Google Chrome böngészőkben a fejlesztői eszközöket az alkalmazás futtatása közben. Valószínűleg több mint 15 másodpercbe fog telni, amíg az alkalmazás adatokat ad vissza, ha gyakran több mint 30 kapcsolatból kér adatokat. Ebben a korlátban minden felvett kapcsolat egyenként számít, függetlenül a kapcsolódó adatforrás típusától — például Microsoft Dataverse vagy SQL Server-táblák, illetve a Microsoft Lists segítségével létrehozott listák.

A vezérlők számának korlátozása

Ne adjon hozzá több mint 500 vezérlőt ugyanahhoz az alkalmazáshoz. A Power Apps HTML-dokumentumobjektum-modellt generál az egyes vezérlőelemek megjelenítéséhez. Minél több vezérlőt ad hozzá, annál több időre lesz szüksége a Power Apps szolgáltatásnak a létrehozáshoz.

Bizonyos esetekben ugyanazt az eredményt érheti el, és gyorsabban elindíthatja az alkalmazást, ha katalógust használ az egyes vezérlők helyett. Ezenkívül érdemes lehet csökkenteni az egy képernyőn található vezérlőtípusok számát is. Egyes vezérlők (például a PDF-megjelenítő, az adattáblázat és a kombinált lista) nagy méretű végrehajtási szkripteket kérnek le, és több időbe telik a megjelenítésük.

Az OnStart tulajdonság optimalizálása

A ClearCollect függvénnyel helyileg gyorsítótárazhatja az adatokat, ha azok nem módosulnak a felhasználói munkamenet során. Emellett az Egyidejű függvénnyel egyidejűleg is betöltheti az adatforrásokat; így az alkalmazáshoz felére lehet csökkenteni az adatok betöltéséhez szükséges időt. További információk: Párhuzamos függvény a Power Apps-ben

A Párhuzamos függvény nélkül ez a következő a négy táblázatot egyenként tölti be:

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

Ezt a viselkedést a böngésző Fejlesztői eszközeiben is megerősítheti, ahogy az az alábbi ábrán látható.

Ábra, amely bemutatja négy tábla egymás utáni betöltését.

Ugyanezt a képletet a Concurrent függvénybe is belefoglalhatja a művelethez szükséges időtartam csökkentéséhez:

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

A módosítással az alkalmazás párhuzamos beolvasással hívja be a táblákat, amint az a következő képen látható.

Ábra, amely bemutatja négy tábla egyszerre történő betöltését.

Megjegyzés

Az OnStart eseményhez kapcsolódó teljesítményproblémákról és azok megoldási problémáiról az OnStart eseménynek finomhangolására van szüksége részben olvashat.

Tipp.

Javasoljuk, hogy használja az App.StartScreen tulajdonságot, mivel egyszerűbbé teszi az alkalmazás indítását, és növeli az alkalmazás teljesítményét.

Keresési adatok gyorsítótárazása

A Set függvénnyel az adatokat helyileg gyorsítótárazhatja a keresési táblázatokból, így nem kell azokat ismételten lekérnie a forrásból. Ez az eljárás optimalizálja a teljesítményt, ha az adatok valószínűsíthetően nem módosulnak a munkamenet során. Csakúgy, mint a következő a példában, az adatokat a rendszer egyszer kéri le a forrásból, majd ezt követően helyileg hivatkozik az adatokra, amíg a felhasználó be nem zárja az alkalmazást.

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

Ez a módszer hasznosabb az olyan adatoknál, mint például a kapcsolattartási adatok, az alapértelmezett értékek vagy a nem gyakran változó felhasználói adatok. Általában a Defaults és a User függvényekkel is használhatja ezt az eljárást.

Képernyők közötti vezérlőfüggőség elkerülése

A teljesítmény javítása érdekében az alkalmazás képernyői csak szükség esetén töltődnek be a memóriába. Ez az optimalizálás akadályozva lehet, ha például az 1. képernyő be van töltve, és egyik képlete egy vezérlőelem tulajdonságát használja a 2. képernyőről. Így a 2. képernyőt is be kell tölteni a függőség teljesítéséhez az 1. képernyő megjelenése előtt. Tegyük fel, hogy a 2. képernyő rendelkezik valamilyen függőséggel a 3. képernyőtől, amely a 4. képernyőtől függ, és így tovább. Ez a függőségi lánc sok képernyő betöltéséhez vezethet.

Ennek okán javasolt a képernyők közötti képletfüggőségek elkerülése. Bizonyos esetekben használhat globális változót vagy gyűjteményt a képernyők közötti adatmegosztásra.

Van egy kivétel: Az előző példában tegyük fel, hogy az egyetlen mód az 1. képernyő megjelenítésére a 2. képernyőről történő odanavigálás. Ezután a 2. képernyő már be van töltve a memóriában az 1. képernyő betöltésekor. A 2. képernyő függőségének teljesítése érdekében nincs szükség további munkára, ezért ez nincs hatással a teljesítményre.

A delegálás használata

Ahol csak lehetséges, használjon olyan függvényeket, amelyek az adatforráshoz delegálják az adatfeldolgozást, ahelyett, hogy lekérnék a helyi eszközre az adatokat feldolgozásra. Ha egy alkalmazásnak helyileg kell feldolgoznia az adatokat, a művelethez jóval több feldolgozási teljesítményre, memóriára, és hálózati sávszélességre van szükség, különösképp, ha az adathalmaz nagy méretű.

Tipp.

Adott csatlakozók által támogatott delegálható funkciókról az összekötő dokumentációja tartalmaz tudnivalókat.

A delegálható függvények példájaként tekintse meg a Microsoft Lists segítségével létrehozott listában a Szám adattípusaként definiált Azonosító oszlopot. Az alábbi példában használt képletek az elvárt módon fogják visszaadni az eredményeket. Az első képlet azonban delegálható, míg a második nem delegálható.

Képlet Delegálható?
Filter ('List data source', ID = 123 ) Igen
Filter(`List data source', ID ="123") Nem

Mivel feltételezzük, hogy az Azonosító oszlop a Szám adattípussal van definiálva a SharePoint-ban, a jobb oldali értéknek numerikus változónak kell lennie a karakterlánc típusú változó helyett. Ellenkező esetben az ilyen eltérés miatt a képlet nem lesz delegálható.

A nem delegálható lekérdezések esetében a nem delegálható függvények és nem megfelelő adatsorkorlátozások használata negatív hatással lehet az alkalmazás teljesítményére. További információ: A vászonalapú alkalmazásban való delegálás ismertetése

A késleltetett betöltés használata

Kapcsolja be az előnézeti funkciót késleltetett betöltés esetén, ha az alkalmazás több mint 10 képernyővel rendelkezik, nincsenek szabályok, és sok olyan vezérlő van, amely több képernyőn található, és közvetlenül a adatforrás jelhez van kötve. Ha létrehoz egy ilyen típusú alkalmazást, és nem engedélyezi ezt a funkciót, az az alkalmazás teljesítményének csökkenésével járhat, mert a még meg nem nyitott képernyőkön lévő összes vezérlőt fel kell tölteni. Ezenkívül az alkalmazás összes képernyőjét frissíteni kell, ha az adatforrás módosul, például ha a felhasználó hozzáad egy rekordot.

Nagy méretű adathalmazok kezelése

Delegálható adatforrások és képlete használatával fenntarthatja az alkalmazása teljesítményét, és közben a felhasználók hozzáférhetnek minden információhoz, amelyre szükségük van, ráadásul elkerülhető a nem delegálható lekérdezésekre vonatkozó 2000 adatsoros korlátozás. Olyan adatrekordoszlopok esetén, amelyekben a felhasználók adatokat kereshetnek, szűrhetnek vagy rendezhetnek, az oszlopokon az adatforrások (például SQL Server vagy SharePoint) által leírt indexelést használjon.

Megjegyzés

Arról, hogy a nagy adathalmazok hogyan okozhatnak általános teljesítményproblémákat különböző platformokon, olvassa el a Nagy adathalmazok betöltése lassú különböző platformokon részt.

Alkalmazások rendszeres újbóli közzététele

A készítőket arra bíztatjuk, hogy rendszeresen tegyék közzé alkalmazásaikat. Mivel a Power Apps-platformot folyamatosan optimalizálják és telepítik, az alkalmazást újra létrehozza a legújabb platformoptimalizálás, amikor újra közzéteszi azt.

Ne ismételje meg ugyanazt a képletet több helyen

Ha több tulajdonság is ugyanazt a képletet futtatja (különösen igaz, ha a képlet összetett), akkor érdemes megfontolni azt, hogy az első tulajdonság kimenetére hivatkozzon a későbbiek során. Ne állítsa például az A, a B, a C, a D és az E vezérlők DisplayMode tulajdonságát ugyanarra a komplex képletre. Ehelyett állítson be az A vezérlő DisplayMode tulajdonságát az összetett képletre, állítsa a B DisplayMode tulajdonságát az A DisplayMode tulajdonságának eredményére, és így tovább a C, D és E értékre.

DelayOutput engedélyezése az összes szövegbeviteli vezérlőn

Ha több olyan képlet vagy szabály van, amely egy Szövegbeviteli vezérlő értékére hivatkozik, akkor állítsa az adott vezérlő DelayedOutput tulajdonságát igaz értékre. A vezérlő Szöveg tulajdonsága csak akkor frissül, ha a gyors egymásutánban beírt billentyűk le vannak állítva. A képletek vagy szabályok nem futnak le olyan sokszor, és az alkalmazás teljesítménye is javulni fog.

Kerülje a Form.Updates használatát a szabályokban és képletekben

Ha egy szabály vagy képlet felhasználó által bevitt értékre hivatkozik egy Form.Updates változó segítségével, akkor az az űrlap minden adatkártyáján keresztül iterálódik, és minden alkalommal létrehoz egy rekordot. Az alkalmazás hatékonyabbá tétele érdekében közvetlenül az adatkártyáról vagy a vezérlő értékéről kell hivatkozni az értékre.

A DelayItemLoading és a töltésjelző használata a Katalógus teljesítményének javítására

A konfigurációtól függően a Katalógus számára hosszabb ideig is tarthat a látható sorok megjelenítése. A teljesítmény többféleképpen is javítható.

  • Egyszerűsítse a sablont. Például érdemes lehet csökkenteni a vezérlőelemek számát, a keresésre mutató hivatkozásokat.
  • Az összetett sablonokkal rendelkező katalógusok előnnyel rendelkeznek, ha a DelayItemLoading értéke igaz, a LoadingSpinner értéke pedig LoadingSpinner.Controls lesz. Ez a módosítás a hosszabb megjelenítési idő esetén javítja a megjelenített élményt. A DelayItemLoading elhalasztja a sablonok megjelenítését is, ami lehetővé teszi a képernyő többi részének gyorsabb megjelenítését, mivel a képernyő és a katalógus nem versenyez az erőforrásokért.

Alkalmazás előtöltésének engedélyezése a teljesítmény javításához

A teljesítmény javításához előtöltést használhat az alkalmazáshoz.

  1. Jelentkezzen be a Power Apps weboldalra, majd válassza ki az Alkalmazások elemet a menüben.

  2. A megosztani kívánt alkalmazásnál válassza ki a További műveletek (...) lehetőséget, majd válassza a Beállítások lehetőséget.

  3. A Beállítások panelen lévő Alkalmazás előtöltése a teljesítmény javításához beállításnál adja meg az Igen értéket. Ezután az alkalmazás előre betöltődik.

Alkalmazás előre betöltése a jobb teljesítmény érdekében.

  1. A Teamsbe ágyazott alkalmazások esetén a változtatások érvénybe léptetéséhez távolítsa el, majd vegye fel újra a Teamsbe az alkalmazást.

    Megjegyzés

    Ez elérhetővé teszi a lefordított alkalmazáseszközöket nem hitelesített végpontokon keresztül, hogy lehetővé tegye a hitelesítés előtti betöltésüket. A felhasználók azonban továbbra is csak a hitelesítés és az engedélyezés befejezése után használhatják az alkalmazást az adatok összekötőkön keresztüli elérésére. Ez a viselkedés biztosítja, hogy az alkalmazás által az adatforrásokból lekért adatok ne legyenek elérhetők jogosulatlan felhasználók számára. A lefordított alkalmazáselemek közé tartoznak az alkalmazásvezérlőkben (például PCF-vezérlőkben) írt szöveget tartalmazó JavaScript-fájlok gyűjteménye, médiaelemek (például képek), az alkalmazás neve és az alkalmazás környezeti URL-címe.

    Az alkalmazásoknak általában kapcsolatokon keresztül kell lekérniük az adathordozókat és az információkat az adatforrásokból. Ha médiatartalmat és információkat kell hozzáadni az alkalmazáshoz anélkül, hogy kapcsolatból származna, és bizalmasnak minősül, érdemes letiltani ezt a beállítást. Megjegyzés: A beállítás letiltása azt eredményezi, hogy a felhasználók egy kicsit tovább várnak az alkalmazás elérésére.

Az eszközön tárolt alkalmazásadatok

Annak érdekében, hogy a felhasználók gyorsabban lekérhessék az alkalmazás részleteit az alkalmazás indításakor, bizonyos adatok helyileg tárolódnak az eszközön a böngésző gyorsítótárában. A tárolt információk közé tartoznak az alkalmazás, a környezet és a kapcsolat adatai. Ezeket az adatokat az egyes böngészők tárhelykorlátai alapján tároljuk a böngészőben. A tárolt adatok törléséhez tekintse meg az egyes böngészőkre vonatkozó utasításokat.

További lépések

Tekintse át a kódolási szabványokat az alkalmazás teljesítményének maximalizálása és az alkalmazások könnyebb karbantartása érdekében.

Kapcsolódó információk

A vászonalapú alkalmazás végrehajtási fázisainak és adathívási folyamatainak ismertetése
Vászonalapú alkalmazások gyakori teljesítményproblémái és megoldásaik
A vászonalapú alkalmazások gyenge teljesítményének gyakori forrásai
Gyakori problémák és megoldások a Power Apps-alkalmazásokhoz
Indítási problémák elhárítása a Power Apps esetében

Megjegyzés

Megosztja velünk a dokumentációja nyelvi preferenciáit? Rövid felmérés elvégzése. (ne feledje, hogy ez a felmérés angol nyelvű)

A felmérés elvégzése körülbelül hét percet vesz igénybe. Semmilyen személyes adatot nem gyűjtünk (adatvédelmi nyilatkozat).