Deli z drugimi prek


Optimizacija kode

Ker se aplikacije platna razvijajo, da bi zadovoljile različne poslovne potrebe, je ohranjanje optimalne zmogljivosti ključnega pomena. Obdelava podatkov, oblikovanje uporabniškega vmesnika in funkcionalnost aplikacije zahtevajo skrben pristop k optimizaciji kode.

Ko aplikacije platna postanejo bolj zapletene, lahko naletite na težave z iskanjem podatkov, kompleksnostjo formul in hitrostjo upodabljanja. Ravnovesje med močno funkcionalnostjo in odzivnim uporabniškim vmesnikom pomeni, da potrebujete sistematičen pristop k optimizaciji kode.

Power Fx optimizacija formul

S funkcijo

Funkcija ovrednoti formulo za en sam zapis. With Formula lahko izračuna vrednost ali izvede dejanja, kot je spreminjanje podatkov ali delo s povezavo. Za lažje branje kompleksnih formul uporabite With razdelitev na manjše poimenovane podformule. Te poimenovane vrednosti delujejo kot preproste lokalne spremenljivke, omejene na obseg With. Uporaba spremenljivke * With * je boljša od kontekstnih ali globalnih spremenljivk, ker je samostojna, enostavna za razumevanje in deluje v katerem koli deklarativnem kontekstu formule. Več o funkciji.With

Posnetek zaslona formule, ki uporablja funkcijo With. Power Fx

Sočasna funkcija

Funkcija Concurrent omogoča hkratno vrednotenje več formul v isti lastnosti, če imajo povezovalnik ali Dataverse klice. Običajno se več formul ovrednoti hkrati, ko jih povežete z operatorjem ; (podpičje). Z operatorjem Concurrent aplikacija hkrati ovrednoti vse formule v lastnosti, tudi po uporabi operatorja ; . Zaradi te sočasnosti uporabniki manj čakajo na rezultate. Ko se podatkovni klici ne začnejo, dokler se prejšnji klici ne končajo, aplikacija počaka na vsoto vseh časov zahtev. Če se podatkovni klici začnejo hkrati, aplikacija čaka le na najdaljši čas zahteve. Več o funkciji . Concurrent

Concurrent(
    ClearCollect(colAccounts1, Accounts),
    ClearCollect(colUsers1, Users),
    ClearCollect(colEnvDef1, 'Environment Variable Definitions'),
    ClearCollect(colEnvVal1, 'Environment Variable Values')
);

Funkcija združitve

Funkcija Coalesce ovrednoti svoje argumente po vrstnem redu in vrne prvo vrednost, ki ni prazna ali prazen niz. S to funkcijo lahko zamenjate prazno vrednost ali prazen niz z drugo vrednostjo, vendar neprazne in neprazne vrednosti nizov pustite nespremenjene. Če so vsi argumenti prazni ali prazni nizi, funkcija vrne prazno vrednost. Coalesce je dober način za pretvorbo praznih nizov v prazne vrednosti.

Primer:

If(Not IsBlank(value1), value1, Not IsBlank(value2), value2)

Zahteva, da se vrednost 1 in vrednost 2 ovrednotita dvakrat. To funkcijo je mogoče zreducirati na:

Coalesce(value1, value2)

Funkcija IsMatch

Funkcija preveri, ali se besedilni niz ujema z vzorcem, sestavljenim iz navadnih znakov, vnaprej določenih vzorcev ali regularnega izraza. IsMatch Več o funkciji . IsMatch

Na primer, ta formula se ujema s številko socialnega zavarovanja Združenih držav:

IsMatch(TextInput1.Text, "\d{3}-\d{2}-\d{4}")

Razlaga regularnega izraza:

\\d Ujema se s katero koli števko (0–9).

{3} Določa, da se mora prejšnji vzorec števk (\d) pojaviti natanko trikrat.

- Ujema se z znakom vezaja.

{2} Določa, da se mora prejšnji vzorec števk (\d) pojaviti natanko dvakrat.

{4} Določa, da se mora prejšnji vzorec števk (\d) pojaviti natanko štirikrat.

Več primerov IsMatch:

IsMatch(TextInput1.Text, "Hello World")
IsMatch(TextInput1\_2.Text, "(?!^\[0-9\]\\\*$)(?!^\[a-zA-Z\]\\\*$)(\[a-zA-Z0-9\]{8,10})")

Optimiziraj aplikacijo OnStart

Lastnost za aplikacije cavas igra ključno vlogo pri določanju dejanj, ki se izvedejo ob zagonu aplikacije. OnStart Ta lastnost omogoča razvijalcem aplikacij izvajanje globalnih inicializacijskih nalog, nastavitev spremenljivk in izvajanje dejanj, ki bi se morala zgoditi le enkrat med postopkom zagona aplikacije. Razumevanje in učinkovita uporaba lastnosti je bistvenega pomena za ustvarjanje odzivnih in učinkovitih aplikacij platna. OnStart

Priporočen pristop je poenostavitev funkcije s selitvijo nastavitev spremenljivk v poimenovane formule. App.OnStart Poimenovane formule, zlasti tiste, ki so konfigurirane zgodaj v življenjskem ciklu aplikacije, se izkažejo za ugodne. Te formule obravnavajo inicializacijo spremenljivk na podlagi podatkovnih klicev, kar zagotavlja čistejšo in bolj organizirano strukturo vaše kode. Več podrobnosti Ustvarite velike in kompleksne aplikacije za platno - Power Apps | Microsoft Learn.

opomba,

Lastnost je imperativ. Gre za urejen seznam del, ki jih je treba opraviti, preden se prikaže prvi zaslon. OnStart Ker je tako specifičen ne le glede tega, kaj je treba storiti, ampak tudi kdaj je treba to delo opraviti glede na vrstni red, omejuje optimizacije prerazporejanja in odlaganja, ki bi jih sicer lahko izvedli.

Začetni zaslon

Če App.OnStart vsebuje klic funkcije Navigate , tudi če je v If funkciji in se redko kliče, moramo dokončati izvajanje aplikacije. OnStart preden prikažemo prvi zaslon aplikacije.  App.StartScreen je nov deklarativni način za označevanje, kateri zaslon naj se prikaže prvi, ki ne blokira optimizacij.

Z nastavitvijo lastnosti StartScreen se prikaže prvi zaslon, preden je App.OnStart dokončano. App.StartScreen declares kateri objekt na zaslonu naj se prikaže najprej brez potrebe po predhodni obdelavi.

Namesto pisanja kode, kot je ta:

App.OnStart = Collect(OrdersCache, Orders);
If(Param("AdminMode") = "1", Navigate(AdminScreen), Navigate(HomeScreen))

Spremeni kodo v:

App.OnStart = Collect(OrdersCache, Orders);
App.StartScreen = If(Param("AdminMode") = "1", AdminScreen, HomeScreen)

Za več podrobnosti glejte <https://Power Apps.microsoft.com/en-us/blog/app-startscreen-a-new-declarative-alternative-to-navigate-in-app-onstart/> .

Opozorilo

Izogibajte se odvisnostim med StartScreen in OnStart. Sklicevanje na imenovano formulo, ki se nato sklicuje na globalno spremenljivko, lahko povzroči stanje tekmovanja, v katerem se StartScreen ne uporabi pravilno. Opomba: med StartScreen in OnStart ne bi smeli imeti odvisnosti. V StartScreen blokiramo sklicevanje na globalne spremenljivke, lahko pa se sklicujemo na poimenovano formulo, ki se nato sklicuje na globalno spremenljivko, kar lahko povzroči stanje tekmovanja, v katerem se StartScreen ne uporabi pravilno.

Poimenovane formule

Poimenovane formule so statične ali konstante, ki jih je mogoče definirati v razdelku App.Formulas. Ko so deklarirane v App.Formulas, jih je mogoče uporabiti kjer koli v aplikaciji in njihova vrednost ostane vedno posodobljena. Poimenovane formule v Power Apps omogočajo definicijo vrednosti ali nizov vrednosti, ki jih platforma samodejno upravlja in posodablja. Ta funkcionalnost prenese odgovornost za izračun vrednosti in vzdrževanje z razvijalca na Power Apps, s čimer poenostavi proces razvoja. Poimenovane formule v Power Apps so zmogljiva funkcionalnost, ki lahko znatno izboljša delovanje in vzdrževanje aplikacije.

Poimenovane formule lahko obravnavajo tudi deklariranje tem aplikacij. V mnogih primerih, ko se gradijo poslovne aplikacije, želimo, da imajo aplikacije skupne teme, ki zagotavljajo dosleden videz in uporabniško izkušnjo. Za ustvarjanje teme je treba na App OnStart deklarirati na desetine in stotine spremenljivk. To je povečalo dolžino kode in čas inicializacije aplikacije.

Sodobni kontrolniki lahko bistveno pomagajo tudi pri temiranju in zmanjšajo količino napisane logike s strani strank za upravljanje tem. Sodobni kontrolniki so trenutno v predogledni različici.

Na primer, naslednjo kodo na App.OnStart lahko premaknemo v App.Formulas, s čimer skrajšamo čas zagona pri deklaracijah globalnih spremenljivk.

Set(BoardDark, RGBA(181,136,99, 1));
Set(BoardSelect, RGBA(34,177,76,1));
Set(BoardRowWidth, 10);                      // expected 8 plus two guard characters for regular expressions.
Set(BoardMetadata, 8 \* BoardRowWidth + 1);   // which player is next, have pieces moved for castling rules, etc.
Set(BoardBlank, "----------------------------------------------------------------\_00000000000000");
Set(BoardClassic, "RNBQKBNR\_\_PPPPPPPP------------------------\_--------\_\_pppppppp\_\_rnbqkbnr\_\_0000000000");

Kodo lahko premaknete v App.Formulas na naslednji način:

BoardSize = 70;
BoardLight = RGBA(240,217,181, 1);
BoardDark = RGBA(181,136,99, 1);
BoardSelect = RGBA(34,177,76,1);
BoardRowWidth = 10;                      // expected 8 plus two guard characters for regular expressions
BoardMetadata = 8 \* BoardRowWidth + 1;   // which player is next, have pieces moved for castling rules, etc.
BoardBlank = "----------------------------------------------------------------\_00000000000000";
BoardClassic = "RNBQKBNR\_\_PPPPPPPP------------------------\_--------\_\_pppppppp\_\_rnbqkbnr\_\_0000000000";

Drug primer je gostilna. Lookups Tukaj je potrebna sprememba v iskalni formuli, da se podatki o uporabniku pridobijo iz Office 365 namesto iz Dataverse. Sprememba je potrebna samo na enem mestu, ne da bi bilo treba spreminjati kodo povsod.

UserEmail = User().Email;
UserInfo = LookUp(Users, 'Primary Email' = User().Email);
UserTitle = UserInfo.Title;
UserPhone = Switch(UserInfo.'Preferred Phone', 'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
UserInfo.'Main Phone');

Te formule utelešajo bistvo izračuna. Opisujejo postopek za določanje UserEmail, UserInfo, UserTitle in UserPhone na podlagi drugih vrednosti. Ta logika je enkapsulirana, kar omogoča široko uporabo v celotni aplikaciji, in jo je mogoče spreminjati na enem mestu. Prilagodljivost sega do preklapljanja iz tabele Uporabniki v povezovalnik brez potrebe po spreminjanju formul, razpršenih po aplikaciji. Dataverse Office 365

Drug pristop je optimizacija countRows.

varListItems = CountRows(SampleList)

S funkcijo **Function** bo treba spremenljivko **inicializirati z začetnim številom vrstic v vzorčnem seznamu in jo ponovno nastaviti po dodajanju ali odstranjevanju elementov seznama. SetvarListItems Pri poimenovanih formulah se spremenljivke varListitems samodejno posodobijo, ko se podatki spremenijo.

Poimenovane formule v lastnosti App.Formulas zagotavljajo bolj prilagodljiv in deklarativen pristop k upravljanju vrednosti in izračunov v celotni aplikaciji, kar ponuja prednosti v smislu časovne neodvisnosti, samodejnih posodobitev, vzdrževanja in nespremenljivih definicij v primerjavi z zanašanjem izključno na App.OnStart.

Vidik Poimenovane formule (App.Formulas) App.OnStart
Časovna neodvisnost Formule so na voljo takoj, izračunati jih je mogoče v poljubnem vrstnem redu. Spremenljivke lahko uvedejo časovne odvisnosti, ki vplivajo na razpoložljivost.
Samodejne posodobitve Formule se samodejno posodobijo, ko se odvisnosti spremenijo. Spremenljivke se nastavijo enkrat med zagonom; morda bodo potrebne ročne posodobitve.
Vzdrževanje Centralizirane formule na enem mestu izboljšujejo vzdrževanje. Razpršene spremenljivke bo morda treba najti in posodobiti na več mestih.
Nespremenljive definicije Definicije formul v App.Formulas so nespremenljive. Spremenljive vrednosti so lahko dovzetne za nenamerne spremembe.

Uporabniško definirane funkcije

Uporabniško definirane funkcije v programu Authoring Studio uporabnikom omogočajo ustvarjanje lastnih funkcij po meri. Power Apps

Če želite uporabljati to funkcijo, v nastavitvah predogleda vklopite uporabniško definirane funkcije (UDF). Funkcije predogleda se ne sme uporabljati v produkciji, zato je privzeto onemogočena, vendar bo kmalu postala splošno dostopna.

Definirajte formulo pod App.Formulas na naslednji način:

FunctionName(Parameter1:DataType1, Parameter2:DataType2):OutputDataType = Formula

Koda deluje takole:

  • FunctionName se uporablja za klic funkcije

  • Parameter je ime vhoda. Dovoljen je en ali več vnosov

  • DataType je argument, posredovan funkciji, ki se mora ujemati s tem podatkovnim tipom. Razpoložljivi tipi podatkov vključujejo logične vrednosti, barvo, datum, datum in čas, dinamične vrednosti, GUID, hiperpovezavo, besedilo in čas.

  • OutputDataType je podatkovni tip, v katerem bo izhod funkcije

  • Formula je izhod funkcije

// Function to calculate the area of a circle based on the radius
calcAreaOfCircle(radius: Number): Number = 
    IfError(Pi() * radius * radius, 0);

Za implementacijo obravnave napak znotraj definirane funkcije uporabite IfError .

Pokličite definirano funkcijo iz kontrolnika besedilo/oznaka.

calcAreaOfCircle(Int(*TextInput1*.Text))

opomba,

To je eksperimentalna funkcija in se lahko spremeni. Nekatere vrste podatkov, kot so zapisi in filtri, še niso podprte.

Optimizirajte spremenljivke

Spremenljivke definirajo in nastavijo lokalne in globalne vrednosti, ki jih uporabljate v celotni aplikaciji. Čeprav so priročne, lahko uporaba preveč spremenljivk zmanjša učinkovitost vaše aplikacije.

Naslednji primer prikazuje, kako nastaviti spremenljivko za vsak atribut objekta, kar zahteva uporabo Set za vsako nepremičnino.

Set(varEmpName, Office365Users.MyProfile().DisplayName);
Set(varEmpCity, Office365Users.MyProfile().City);
Set(varEmpPhone, Office365Users.MyProfile().BusinessPhones);
Set(varEmpUPN, Office365Users.MyProfile().UserPrincipalName);
Set(varEmpMgrName, Office365Users.ManagerV2(varEmpUPN).DisplayName);

Učinkovitejši pristop je, da nepremičnino uporabljate le, ko jo potrebujete:

Set(varEmployee, Office365Users.MyProfile())
"Welcome " & varEmployee.DisplayName

Spremenljivke konteksta in globalne spremenljivke uporabljajte pametno. Če obseg spremenljivke presega en sam zaslon, uporabite globalne spremenljivke namesto kontekstnih spremenljivk.

Preveč neuporabljenih spremenljivk poveča porabo pomnilnika in lahko upočasni inicializacijo aplikacije. Za te spremenljivke so dodeljeni viri, tudi če jih ne uporabljate. Neuporabljene spremenljivke prav tako povečajo kompleksnost logike vaše aplikacije. Čeprav vpliv morda ne bo hud, je dobra praksa, da svojo aplikacijo Power App ohranjate čisto in organizirano za boljše delovanje in lažji razvoj.

Optimizirajte zbirke

Zbirke so začasne strukture za shranjevanje podatkov, ki jih uporabljate za shranjevanje in upravljanje podatkov v aplikaciji. Power Apps Vendar pa lahko zbirke povzročijo prekomerno delovanje, če jih uporabljate preveč. Omejite uporabo zbirk in jih uporabljajte le, kadar je to nujno potrebno.

// Use this pattern
ClearCollect(colErrors, {Text: gblErrorText, Code: gblErrorCode});

// Do not use this pattern
Clear(colErrors);
Collect(colErrors, {Text: gblErrorText, Code: gblErrorCode});

Za štetje zapisov v lokalni zbirki uporabite CountIf namesto Count(Filter()).

Pri delu z zbirkami upoštevajte ta navodila:

Omejite velikost in število zbirk. Ker so zbirke lokalne za aplikacijo, so shranjene v pomnilniku mobilne naprave. Več zbirk podatkov kot je shranjenih ali več zbirk kot jih uporabljate, slabša je zmogljivost. Za pridobitev samo določenih stolpcev uporabite funkcijo ShowColumns . Dodajte funkcijo, da dobite samo ustrezne podatke. Filter

Naslednji primer funkcije vrne celoten nabor podatkov.

ClearCollect(colDemoAccount, Accounts);

Primerjajte to z naslednjo kodo, ki vrne le določene zapise in stolpce:

ClearCollect(colAcc,
              ShowColumns(
                Filter(Accounts, !IsBlank('Address 1: City')),
                "name","address1_city"))

Ta primer vrne naslednji nabor podatkov:

Posnetek zaslona nabora podatkov s tabelo z imenom colAcc in dvema stolpcema, address1_city in name.

Nastavite pogostost osveževanja vira podatkov. Če v zbirko dodate nove zapise, jo osvežite ali vanjo zberite podatke, da dobite nove ali spremenjene zapise. Če več uporabnikov posodobi vaš vir podatkov, osvežite zbirko, da dobite nove ali spremenjene zapise. Več klicev za osvežitev pomeni več interakcije s strežnikom.

Predpomnilnik podatkov v zbirkah in spremenljivkah

Zbirka je spremenljivka tabele, ki shranjuje vrstice in stolpce podatkov, ne le enega samega podatkovnega elementa. Zbirke so uporabne iz dveh glavnih razlogov: združevanje podatkov pred pošiljanjem v vir podatkov in predpomnjenje informacij, da se izognemo pogostim poizvedbam. Ker se zbirke ujemajo s tabelarično strukturo vira podatkov in Power Apps, vam omogočajo učinkovito interakcijo s podatki, tudi ko ste brez povezave.

// Clear the contents of EmployeeCollection, it already contains data
ClearCollect(
    colEmployee,
    {
        Id: "1",
        Name: "John",
        Department: "IT"
    },
    {
        Id: "2",
        Name: "Nestor",
        Department: "IT"
    }
)

Odstranite neuporabljene spremenljivke in medije

Čeprav neuporabljeni mediji in spremenljivke morda nimajo pomembnega vpliva na delovanje aplikacije, je pomembno, da aplikacijo očistite tako, da odstranite vse neuporabljene medije ali spremenljivke.

  • Neuporabljene medijske datoteke povečajo velikost aplikacije, kar lahko upočasni čas nalaganja aplikacije.

  • Neuporabljene spremenljivke povečajo porabo pomnilnika in lahko nekoliko upočasnijo inicializacijo aplikacije. Za te spremenljivke se dodelijo viri, tudi če se ne uporabljajo. Preveč neuporabljenih spremenljivk lahko tudi zaplete logiko aplikacije.

  • Za pregled neuporabljenih medijev in spremenljivk uporabite preverjevalnik aplikacij.

Optimizirajte zaslone in kontrole

Izogibajte se navzkrižnemu sklicevanju na kontrole

Kontrolniki, ki se sklicujejo na kontrolnike na drugih zaslonih, lahko upočasnijo nalaganje in navigacijo po aplikacijah. S tem lahko aplikacijo prisilite, da takoj naloži druge zaslone, namesto da čaka, da uporabnik odpre ta zaslon. Če želite odpraviti to težavo, za skupno rabo stanja med zasloni uporabite spremenljivke, zbirke in navigacijski kontekst.

Preverjevalnik aplikacij v Power Apps Studio prikazuje kontrolnike, ki so medsebojno povezani. Redno pregledujte preverjevalnik aplikacij, da odpravite to težavo.

Tukaj je primer navzkrižno povezanih kontrol. Na spodnji sliki je kontrolnik Galerija 1 navzkrižno povezan s kontrolnikom Zaslon 2, Oznaka 2.

Posnetek zaslona, ​​ki prikazuje kontrolnik s sklicevanjem nanj. Power Apps Studio

Če se na drugem zaslonu sklicujete na kontrolnik s prvega zaslona v aplikaciji, to ne bo vplivalo na učinkovitost delovanja, ker je prvi zaslon že naložen. To je pravzaprav lahko dobra stvar, ker je aplikacija deklarativna namesto uporabe spremenljivk.

Če se sklicujete na kontrolnike, ki še niso naloženi, na primer prvi zaslon, ki se sklicuje na kontrolnik z imenom Label 3 iz zaslona 3, aplikacija naloži ta zaslon v pomnilnik.

Omogoči DelayOutput za besedilne kontrolnike

Nastavitev DelayOutput, ko je nastavljena na true, registrira uporabniški vnos po polsekundni zakasnitvi. To je uporabno za odlašanje dragih operacij, dokler uporabnik ne konča z vnosom besedila, na primer za filtriranje, ko se vnos uporablja v drugih formulah.

Na primer, za galerijo, katere elementi so filtrirani glede na to, kaj uporabnik vnese v kontrolnik TextInput:

  • Če je DelayOutput nastavljen na false, kar je privzeta vrednost, se galerija filtrira takoj, ko je vneseno kakršno koli besedilo. Če imate galerijo z veliko elementi, njeno ponovno nalaganje s spremembami takoj upočasni delovanje. Bolje je malo počakati. To je praktično, če za iskalni niz uporabljate TextInput (glejte Iskanje ali nove funkcije StartsWith).

  • Če je DelayOutput nastavljen na true, pride do kratke zakasnitve, preden so spremembe zaznane. To vam daje čas, da dokončate tipkanje. Zakasnitev dobro deluje z lastnostjo TextInput.OnChange. Če imate dejanja, povezana s spremembami, jih ne želite sprožiti, dokler ne končate z vnašanjem v polje.

Delegiranje in obdelava na strani strežnika

Pooblastitev

Delegiranje v Power Apps je koncept, ki se nanaša na zmožnost aplikacije, da določene operacije prenese na osnovni vir podatkov, namesto da bi jih obdelala sama. Power Apps Z uporabo delegiranja v Power Apps lahko razvijalci ustvarijo učinkovitejše in skalabilnejše aplikacije, ki dobro delujejo tudi v scenarijih z velikimi nabori podatkov. Pomembno se je zavedati omejitev delegiranja za določene vire podatkov in operacije ter ustrezno oblikovati aplikacije za doseganje optimalne zmogljivosti.

![OPOMBA] Vse funkcije niso delegirane. Prosimo, glejte Razumevanje delegiranja če želite izvedeti več o delegiranju.

Delegiranje ima več prednosti, kot sta optimizacija poizvedb in dodaja podporo za velike nabore podatkov. Poleg tega, če se izvorni podatki pogosto spreminjajo, delegiranje pomaga ohranjati podatke posodobljene.

Zmanjšajte število klicev API-ja do vira podatkov

Včasih se zdi priročno ustvarjati zbirke z izvajanjem združevanj znotraj aplikacije platna. V nadaljevanju je predstavljen primer:

V tem primeru sta dve tabeli: Vozniki in Tovornjaki. Koda ustvari zbirko podatkov o voznikih in tovornjakih ter za vsak tovornjak pokliče voznika, ki je lastnik tovornjaka.

// Bad code
ClearCollect(vartruckdata, AddColumns('Truck Details',
    "CITY",LookUp(Drivers, 'Truck Details'\[@'Dummy ID'\] = Drivers\[@'Truck Details'\],City),
        "FIRSTNAME",LookUp(Drivers, 'Truck Details'\[@'Dummy ID'\] = Drivers\[@'Truck Details'\],'Driver First Name'),
    "LASTNAME",LookUp(Drivers, 'Truck Details'\[@'Dummy ID'\] = Drivers\[@'Truck Details'\],'Driver Last Name'),
        "STATE",LookUp(Drivers, 'Truck Details'\[@'Dummy ID'\] = Drivers\[@'Truck Details'\],State)));

Izvajanje takšnega združevanja v aplikaciji platna lahko ustvari veliko klicev vira podatkov, kar vodi do počasnega nalaganja.

Boljši pristop je:

// Good code
Set(
    varTruckData,
    LookUp(
        Drivers,
        'Dummy ID' = ThisRecord.'Dummy ID',
        'Driver First Name'
    ) & LookUp(
        Drivers,
        'Dummy ID' = ThisRecord.'Dummy ID',
        'Driver Last Name'
        )
);

Set(
    varTruckData,
    With(
        {
            vDriver: LookUp(
                Drivers,
                'Dummy ID' = ThisRecord.'Dummy ID'
            )
        },
        vDriver.'Driver First Name' & vDriver.'Driver Last Name'
    )
)

V scenariju realnega časa lahko s popravkom podatkov pri viru skrajšate čas nalaganja s petih minut na manj kot 10 sekund.

Obdelava na strani strežnika

Različni viri podatkov, kot sta SQL in Dataverse, vam omogočajo, da obdelavo podatkov, kot so filtri in iskanja, prenesete na vir podatkov. V SQL Serverju lahko ustvarite poglede, ki jih definira poizvedba. V Dataverse, lahko ustvarite vtičnike z nizko kodo za obdelavo podatkov na strežniku in vračanje le končnih rezultatov v aplikacijo platna.

Delegiranje obdelave podatkov na strežnik lahko izboljša zmogljivost, zmanjša količino kode na strani odjemalca in olajša vzdrževanje aplikacije.

Več o tem vtičniki v Dataverse.

Optimizirajte vzorce podatkov poizvedb

Uporabite eksplicitno izbiro stolpcev

Funkcija eksplicitne izbire stolpcev (ECS) je privzeto vklopljena za vse nove aplikacije. Če za vašo aplikacijo ni vklopljeno, ga vklopite. ECS samodejno zmanjša število pridobljenih stolpcev na samo tiste, ki se uporabljajo v aplikaciji. Če ECS ni vklopljen, lahko dobite več podatkov, kot jih potrebujete, kar lahko vpliva na delovanje. Včasih, ko aplikacija pridobiva podatke prek zbirk, se lahko prvotni vir stolpca izgubi. ECS izbriše stolpce, če ne more ugotoviti, da so uporabljeni. Če želite, da ECS ohrani manjkajoči stolpec, uporabite izraz PowerFx ShowColumns za sklicem na zbirko ali v kontrolniku.

Izogibajte se klicanju funkcije Power Automate za napolnitev zbirke

Običajna praksa je uporaba ` Power Automate ` za pridobivanje in polnjenje zbirk Power Apps. Čeprav je ta pristop veljaven, obstajajo situacije, ko morda ni najučinkovitejša izbira. Klicanje Power Automate poveča omrežno zakasnitev in doda 0,6-sekundne stroške delovanja za vzpostavitev Power Automate toka.

Prekomerna uporaba pretokov lahko povzroči tudi omejitve izvajanja in dušenje. Power Automate Zato vedno ocenite kompromise med omrežno zakasnitvijo in stroški delovanja.

Odpravite problem N+1

Problem N+1 je pogosta težava pri poizvedbah v zbirkah podatkov, kjer se namesto pridobivanja vseh zahtevanih podatkov v eni sami poizvedbi izvede več dodatnih poizvedb za pridobivanje povezanih podatkov. To lahko povzroči težave z zmogljivostjo, saj vsaka dodatna poizvedba povzroči dodatne stroške.

Preprost klic, kot je ta, za nalaganje zbirke lahko ustvari N+1 klicev v vir podatkov.

ClearCollect(MyCollection, OrdersList,
    {
        LookUp(CustomersList,CustomerID = OrdersList[@CustomerID])
    }
)

V kontekstu aplikacij in galerij platna se lahko pri delu z viri podatkov in galerijami, ki prikazujejo povezane zapise, pojavi problem N+1. Do težave običajno pride, ko je za vsak element, prikazan v galeriji, izvedenih več poizvedb, kar povzroči ozko grlo v delovanju.

Uporabite ogled objektov v SQL Serverju, da se izognete težavi s poizvedbami N+1 ali spremenite uporabniški vmesnik, da se izognete sprožanju scenarija N+1.

Dataverse samodejno pridobi zahtevane podatke iz povezanih tabel in lahko izberete stolpce iz povezanih tabel.

ThisItem.Account.'Account Name'

Če je velikost zapisa majhna (500 zapisov), jo lahko predpomnite v zbirko in zbirko uporabite za zagon scenarija poizvedbe Iskanje (N+1). RelatedDataSourc<

Omejitev velikosti paketa

Čeprav Power Apps veliko pomaga pri optimizaciji nalaganja aplikacij, lahko ukrepate za zmanjšanje njihovega vpliva na okolje. Zmanjšana zasedenost je še posebej pomembna za uporabnike starejših naprav ali uporabnike v območjih z večjo zakasnitvijo ali manjšo pasovno širino.

  • Ocenite medije, ki so vdelani v vašo aplikacijo. Če nekaj ni uporabljeno, to izbrišite.

  • Vdelane slike so morda prevelike. Namesto datotek PNG preverite, ali lahko uporabite slike SVG. Vendar bodite previdni pri uporabi besedila v slikah SVG, saj bo treba uporabljeno pisavo namestiti na odjemalcu. Odlična rešitev, ko morate prikazati besedilo, je, da čez sliko nalepite besedilno oznako.

  • Ocenite, ali je ločljivost ustrezna za obliko. Ločljivost za mobilno aplikacijo ni nujno tako visoka kot ločljivost za namizno aplikacijo. Eksperimentirajte, da dosežete pravo ravnovesje med kakovostjo in velikostjo slike.

  • Če imate neuporabljene zaslone, jih izbrišite. Pazite, da ne izbrišete skritih zaslonov, ki jih uporabljajo samo ustvarjalci aplikacij ali skrbniki.

  • Ocenite, ali poskušate v eno aplikacijo spraviti preveč delovnih procesov. Na primer, ali imate v isti aplikaciji tako skrbniške zaslone kot zaslone odjemalcev? Če je tako, razmislite o njihovi razdelitvi na posamezne aplikacije. Ta pristop bo olajšal tudi delo več ljudem hkrati na aplikacijah in omejil "polmer eksplozije" (količino testiranja), ko spremembe aplikacije zahtevajo popolno testiranje.

Optimiziraj za vse

Funkcija *v* se uporablja za iteracijo po tabeli zapisov in uporabo formule ali niza formul za vsak zapis. ForAll Power Apps Čeprav je funkcija sama po sebi vsestranska, lahko nepravilna uporaba funkcije ForAll hitro zmanjša učinkovitost vaše aplikacije.

Funkcija ForAll je singularna zaporedna funkcija namesto sočasne funkcije. Zato naenkrat pregleda samo en zapis, dobi rezultat in nato nadaljuje z naslednjim, dokler ne pregleda vseh zapisov v svojem obsegu.

Za vsako ceno se izogibajte gnezdenju za vse. To lahko privede do eksponentnih iteracij in znatno vpliva na učinkovitost.

ClearCollect(FollowUpMeetingAttendees.ForAll(ForAll(Distinct(AttendeesList.EmailAddress.Address).Lookup(Attendees))))

Paketne posodobitve baze podatkov

ForAll + Patch je lahko eden od pristopov k paketni posodobitvi baze podatkov. Vendar bodite previdni pri uporabi vrstnega reda »Za vse« in »Popravek«.

Naslednja funkcija:

Patch(SampleFoodSalesData, ForAll(colSampleFoodSales,
    {
        demoName:"fromCanvas2"
    })
);

Deluje bolje kot:

ForAll(colSampleFoodSales, Patch(SampleFoodSalesData,
    {
        demoName:"test"
    })
);

Naslednji korak