Optimalizujte načítanie aplikácie alebo stránky pre maximálny výkon

Jedným z kľúčových faktorov, ktoré formujú vnímanie aplikácie používateľom, je to, ako rýchlo sa otvára a stáva sa funkčnou. Preto je pri vytváraní výkonnej aplikácie rozhodujúce uprednostniť tento cieľ. Na dosiahnutie optimálneho výkonu aplikácie je potrebné venovať pozornosť trom hlavným oblastiam:

  1. Rýchlo načítajte dáta
  2. Efektívne výpočty
  3. Minimalizácia požadovaných zdrojov

Každá z týchto oblastí má niekoľko spoločných anti-vzorcov.

Rýchlo načítajte dáta

Postupujte podľa týchto pokynov, aby ste dosiahli rýchle načítanie údajov aplikácií.

Vyhnite sa priamemu vypĺňaniu kolekcie veľkým množstvom údajov

Niekedy autori používajú ClearCollect() na kopírovanie údajov zo servera do kolekcie vo svojej aplikácii. Tento postup je riešením pre obmedzenia delegovania v zdroji alebo pretože plánujú používať kolekcie v aplikácii na iné účely. Použitie ClearCollect() môže potenciálne zvýšiť rýchlosť aplikácie, keď sa zbierka neskôr využije. Pri jeho implementácii je však dôležité postupovať opatrne. Používanie ClearCollect týmto spôsobom môže viesť k pomalšiemu načítaniu aplikácií alebo pri navigácii medzi stránkami. Pred zobrazením údajov v galérii alebo tabuľke musí byť funkcia ClearCollect() ukončená. Tento krok môže trvať dlho, ak existuje veľa údajov alebo ak tento prístup používate pre príliš veľa zdrojov údajov. Kolekcie sa najlepšie používajú v situáciách, keď sú údaje malé a na kolekcii potrebujete vykonať veľa výpočtov. Dobrým využitím kolekcií je napríklad online košík. Zákazník môže položky pred potvrdením objednávky niekoľkokrát aktualizovať a odstrániť. Okrem toho môžete kolekciu rozšíriť o ďalšie dátové položky, ako sú potenciálne zľavy, zvýraznenia atď. Údaje, ktoré sú „iba na čítanie“, by mali byť prístupné natívne – bez toho, aby ste ich vnášali do kolekcie.

Zvážte vyhýbanie sa volaniu Power Automate na vyplnenie zbierky

Tento problém je miernou variáciou predchádzajúcej časti. Niekedy autori tiež používajú Power Automate na vyplnenie svojej zbierky Power Apps. Inštancia vyžaduje približne 0,6-sekundové náklady na výkon Power Automate. Power Automate musí byť nezávisle spustený pri každom vyvolaní. Musí alokovať pamäť, umiestniť sa so správnymi komponentmi a byť pripravený na spustenie. Rovnako ako v prípade vyššie uvedených rád, jeden alebo dva hovory na Power Automate nemusia byť problémom v závislosti od vašej aplikácie. Takmer všeobecne však aplikácie s najhorším výkonom tento prístup nadmerne využívajú. Náklady na výkon sa môžu rýchlo zvýšiť a zničiť výkon vašej aplikácie.

Vyhnite sa používaniu SaveData() a LoadData() ako úplného offline scenára

Niektorí autori používajú ClearCollect() a potom SaveData() na ukladanie údajov na všeobecné účely offline. Môžete použiť SaveData() na uloženie zbierky do zariadenia a LoadData() na jej načítanie, keď ste offline. Tento prístup sa však neodporúča v prípadoch, keď je k dispozícii veľké množstvo údajov alebo ak sú údaje zložité. Vďaka tomu je vaša aplikácia pomalšia, pretože musí čakať na dokončenie funkcie ClearCollect() a až potom môže zobraziť údaje. SaveData() a LoadData() by ste mali používať len pre malé a jednoduché dátové scenáre, ako sú preferencie a krátke zoznamy. Lepší spôsob, ako pracovať s veľkým množstvom offline údajov, je použiť Power Apps funkciu offline, ktorá funguje s Dataverse. Táto funkcia dokáže efektívnejšie spracovať väčšie a zložitejšie dáta.

Použite Explicitný výber stĺpcov

Explicitný výber stĺpcov je predvolene zapnutý. Niektorí autori však túto funkciu vypínajú. Problém je v tom, že keď je zapnutý Explicitný výber stĺpcov (ECS), stĺpce sa niekedy nenačítajú z zdroj údajov, ak sa údaje najskôr načítajú do kolekcie. Keďže niektoré tabuľky môžu mať veľa stĺpcov, ECS automaticky vypočíta, ktoré stĺpce je potrebné načítať na základe ich použitia v ovládacích prvkoch (napríklad galérie a formuláre). Keďže niektoré tabuľky môžu obsahovať veľa stĺpcov, zmenšením veľkosti sťahovania sa môže zvýšiť výkon. Niektoré tabuľky môžu mať sto stĺpcov alebo viac. Ak vaša aplikácia potrebuje použiť iba 10 stĺpcov a vy vytiahnete všetky stĺpce z tabuľky so 100 stĺpcami, znížite desaťkrát toľko údajov, koľko skutočne potrebujete.

Väčšina problémov vzniká pri vnášaní údajov do kolekcií. Ak sa na stĺpec explicitne odkazuje v ovládacom prvku, ECS funguje dobre. A ECS vo všeobecnosti funguje pre zbierky. Stĺpcová línia sa však občas stratí, keď sa údaje presúvajú cez kolekcie a premenné. A tak Power Apps môže stratiť prehľad o stĺpci, ktorý by mal načítať. Ak chcete tento problém vyriešiť, pomocou funkcie Power Apps môžete prinútiť ShowColumns „zapamätať si“ stĺpec. Napríklad:

    ClearCollect(
        MyColTable, 
        ShowColumns(Filter(BankAccounts, AcountNo = 32),
        "Col1", 
        "Col2", 
        "Col3")
    );

Kde Col1, Col2 a Col3 sú stĺpce, ktoré očakávate, že sa načítajú z zdroj údajov (napríklad Account zdroj údajov ).

Prípadne môžete do formulára pridať skrytý ovládací prvok, ktorý odkazuje na stĺpec. To núti Power Apps „zapamätať si“ stĺpec.

Rýchle výpočty

Rýchle (alebo efektívne) výpočty sú samy osebe cieľom výkonnosti. Ďalšie informácie nájdete v časti Rýchle (efektívne) výpočty. Existujú však niektoré bežné anti-vzory, ktoré môžu ovplyvniť aj zaťaženie aplikácie, a preto o nich diskutujeme tu. Nižšie je uvedený zoznam optimalizácií, ktoré by ste mali zvážiť a ktoré môžu ovplyvniť spustenie aplikácie alebo navigáciu na stránke.

Použite App.Formulas

Historicky veľa autorov vložilo do OnStart veľké množstvo výpočtov. Keď do OnStart umiestnite výraz, vynúti to Power Apps spustiť tento výraz presne pri spustení aplikácie a pred všetkým ostatným. Avšak, so zavedením App.Formulas môžete nechať Power Apps rozhodnúť, kedy spustiť výraz. Power Apps môže spustiť vzorec 'Just-in-time' skôr, ako to bude potrebné. Ďalšie informácie nájdete v časti Vzorce aplikácií. Použite App.Formulas na rozdelenie svojho vzorca na kúsky, ktoré Power Apps môže efektívnejšie zabezpečiť vykonanie.

Použite súbežné

Použite funkciu Concurrent, aby ste umožnili súčasné spustenie vzorcov. Je bežné používať túto funkciu na vyplnenie kolekcií, pretože umožňuje paralelné vykonávanie. Aj keď to môže poskytnúť mierne zrýchlenie, pridanie mnohých zdrojov údajov môže spôsobiť problémy s načasovaním a obmedzovaním.

Pre skryté ovládacie prvky použite vylepšený výkon

Keď je predvolene povolené vo všetkých nových aplikáciách vytvorených od decembra 2022, Power Apps nezobrazuje žiadny ovládací prvok, ktorý nie je na začiatku viditeľný.

Minimalizujte potrebné zdroje

Minimalizujte zdroje potrebné na spustenie aplikácie alebo obrazovky. Toto úsilie zahŕňa starostlivé určenie rozsahu alebo rozdelenie zdrojov, ktoré vaša aplikácia alebo obrazovka potrebuje. Nižšie uvádzame niekoľko prístupov, ktoré vám pomôžu.

Použite úvodnú obrazovku s nízkou závislosťou a odstráňte nepoužívané obrazovky.

Použite prvú obrazovku s nízkou závislosťou, napríklad uvítaciu vo svojej aplikácii. Vytvorte obrazovku, ktorá nenačítava galériu, tabuľku ani referenčné údaje. To riadi vnímanie rýchlosti používateľom a umožňuje Power Fx správne odložiť niektoré výpočty na neskôr. Ak máte nejaké nepoužité obrazovky, odstráňte ich.

Udržujte nízke závislosti medzi obrazovkami

Krížové odkazy na stránky vynútia načítanie ďalších stránok prostredníctvom odkazov, napríklad odkazovaním na ovládacie prvky na stránkach a vkladaním do kolekcií. Niektorým referenciám sa možno nedá vyhnúť. Ak je to možné, centralizujte bežné odkazy na jednu stránku, aby sa načítala iba stránka.

Zvážte vložené médiá

Autori niekedy vkladajú médiá do svojich aplikácií, aby zabezpečili rýchle načítanie. Ak máte vložené médium, zvážte, či ho používate alebo nie. Ak nie, odstráňte ho. Ak ste vložili súbor .png, zvážte nahradenie súboru .svg, ktorý je menší. Upozorňujeme, že ak používate .svg, písmo pre .svg musí byť na klientskom počítači. Zvážte rozlíšenie vloženého média. Je príliš vysoká pre zariadenie, na ktorom sa bude používať?

Nezabudnite na App.StartScreen

Ak používate App.StartScreen, uistite sa, že prvá obrazovka je prázdna. Vzhľadom na aktuálne balenie aplikácie je prvá logická obrazovka vždy spojená s logikou inicializácie aplikácie a bude inicializovaná bez ohľadu na to, či na ňu niekedy prejdeme.

Zvážte rozdelenie aplikácie

Ak je vaša aplikácia veľká, zvážte jej rozdelenie na menšie aplikácie. Ak je funkcia dostatočne oddelená v rôznych častiach vašej aplikácie, tento prístup môže fungovať. V tomto scenári vytvoríte skutočnú samostatnú aplikáciu, ktorú spustíte s parametrami, ktoré zahŕňajú kontext z prvej alebo nadradenej aplikácie.

Návrhy

Ak chcete dosiahnuť cieľ rýchleho spustenia aplikácie a stránky, zvážte nasledujúce otázky a návrhy:

  1. Načítavate veľa údajov na prvej obrazovke? Môžete použiť inú prvú obrazovku?
  2. Spúšťate veľa príkazov alebo Power Fx výrazov na začiatku načítania aplikácie? Môžete tieto príkazy a výrazy odložiť na neskorší bod aplikácie? Získavate iba údaje, ktoré skutočne potrebujete na spustenie aplikácie? 1 Môžete previesť výrazy v App.OnStart na pomenované vzorce pomocou App.Formulas? To umožňuje Power Fx rozhodnúť sa, kedy skutočne vykonať vzorec, namiesto toho, aby sa to prinútilo, aby sa to stalo pri načítaní alebo navigovaní udalostí.
  3. Môžete použiť samostatný Power Automate tok na vytvorenie dočasnej tabuľky v miestnej ukladací priestor údajov, ako napríklad Dataverse , ktorá kombinuje údaje z rôznych zdrojov? A potom získať prístup k týmto údajom v aplikácii Power App?
  4. Môžete na začatie obchodného procesu použiť akcie spustené serverom namiesto volania toku Power Automate ?
  5. Môžete vytvoriť zobrazenie na serveri, ktoré spojí údaje za vás?
  6. Ak chcete vo svojej aplikácii používať údaje offline, môžete použiť funkciu Power Apps offline, s ktorou funguje Dataverse? Ak vaše údaje nie sú v Dataverse, môžete ich tam presunúť?