Optimer app- eller sideindlæsning for maksimal ydeevne
En af nøglefaktorerne, der former en brugers opfattelse af en app, er, hvor hurtigt den åbner og bliver funktionel. Derfor er prioritering af dette mål afgørende i opbygningen af en effektiv app. For at opnå optimal appydelse er der tre hovedområder, der kræver opmærksomhed:
- Indlæse data hurtigt
- Effektive beregninger
- Minimering af nødvendige ressourcer
Hvert af disse områder har flere fælles anti-mønstre.
Indlæse data hurtigt
Følg disse retningslinjer for at opnå hurtige dataindlæsningsapps.
Undgå at udfylde en samling direkte med store mængder data
Nogle gange bruger forfattere ClearCollect() til at kopiere data fra en server til en samling i deres app. Denne praksis er en omvej for delegeringsbegrænsninger i kilden, eller fordi de planlægger at bruge samlinger i appen til andre formål. Brug af ClearCollect() kan potentielt øge appens hastighed, når samlingen senere bliver brugt. Det er dog vigtigt at udvise forsigtighed, mens du implementerer det. Brug af ClearCollect på denne måde kan føre til langsommere app-indlæsningstider, eller når du navigerer mellem sider. ClearCollect() skal afsluttes, før du kan se dataene i et galleri eller en tabel. Dette trin kan tage lang tid, hvis der er mange data, eller hvis du bruger denne tilgang til for mange datakilder. Samlinger bruges bedst til situationer, hvor data er små, og du skal lave mange beregninger på samlingen. For eksempel er en god brug af samlinger en Online ordrekurv. Kunden kan opdatere og fjerne varer flere gange, før han vælger at forpligte ordren. Derudover kan du udvide samlingen med flere dataelementer som potentielle rabatter, højdepunkter osv. Data, der er 'skrivebeskyttet', bør tilgås indbygget - uden at bringe dem i en samling.
Overvej at undgå at ringe Power Automate for at udfylde en samling
Dette problem er en lille variation af det foregående afsnit. Nogle gange bruger forfattere også Power Automate til at udfylde deres samling i Power Apps. Der er cirka 0,6 sekunders præstationsomkostninger at instantiere Power Automate. Power Automate skal lanceres uafhængigt, hver gang den kaldes. Den skal allokere hukommelse, blive placeret med de rigtige komponenter og være klar til at køre. Som med ovenstående råd er et eller to opkald til Power Automate muligvis ikke et problem afhængigt af din app. Men næsten universelt overbruger de dårligst ydende apps denne tilgang. Ydelsesomkostningerne kan hurtigt stige og ødelægge din app's ydeevne.
Undgå at bruge SaveData() og LoadData() som et fuldt offline-scenarie
Nogle forfattere bruger ClearCollect() og derefter SaveData() til at gemme data til almindelig offline brug. Du kan bruge SaveData() til at gemme samlingen på din enhed og LoadData() til at indlæse den, når du er offline. Denne tilgang anbefales dog ikke i tilfælde, hvor der er en stor mængde data, eller hvis dataene er komplekse. Det gør din app langsommere, fordi den skal vente på, at ClearCollect() er færdig, før den kan vise dataene. Du bør kun bruge SaveData() og LoadData() til små og simple datascenarier såsom præferencer og korte lister. En bedre måde at arbejde med store mængder offline data på er at bruge Power Apps offlinefunktionen, der fungerer med Dataverse. Denne funktion kan håndtere større og mere komplekse data mere effektivt.
Brug eksplicit valg af kolonner
Valg af eksplicit kolonne er aktiveret som standard. Nogle forfattere slår dog denne funktion fra. Problemet er, at hvis Eksplicit valg af kolonner (ECS) er slået til, hentes kolonner nogle gange ikke fra datakilden, hvis dataene først hentes ind i en samling. Da nogle tabeller kan have mange kolonner, beregner ECS automatisk, hvilke kolonner det er nødvendigt at hente, baseret på deres brug i kontrolelementer (f.eks. gallerier og formularer). Da nogle tabeller kan have mange kolonner, kan en reduktion af størrelsen af overførslen fremskynde ydeevnen. Nogle tabeller kan have hundrede kolonner eller mere. Hvis din app kun skal bruge 10 kolonner, og du henter alle kolonnerne ned fra en tabel med 100 kolonner, henter du ti gange så mange data ned, som du faktisk har brug for.
De fleste problemer opstår, når data føres ind i samlinger. Hvis der udtrykkeligt henvises til en kolonne i et kontrolelement, fungerer ECS godt. Og ECS fungerer generelt for samlinger. Men af og til går kolonneafstamningen tabt, når data bevæger sig gennem samlinger og variabler. Og derfor kan Power Apps miste overblikket over den kolonne, der skal hentes. For at løse dette problem kan du tvinge Power Apps til at "huske" kolonnen ved at bruge ShowColumns
-funktionen. Eksempel:
ClearCollect(
MyColTable,
ShowColumns(Filter(BankAccounts, AcountNo = 32),
"Col1",
"Col2",
"Col3")
);
Hvor Col1
, Col2
og Col3
er kolonner, du forventer at blive hentet fra datakilden (f.eks. datakilden Account
).
Alternativt kan du føje et skjult kontrolelement til din formular, der refererer til kolonnen. Derved tvinges Power Apps til at "huske" kolonnen.
Hurtige beregninger
Hurtige (eller effektive) beregninger er et præstationsmål i sig selv. For mere information, se Hurtige (effektive) beregninger. Der er dog nogle almindelige anti-mønstre, der også kan påvirke app-belastningen, og derfor diskuterer vi dem her. Nedenfor er en liste over optimeringer, du bør overveje, og som kan påvirke applancering eller sidenavigation.
Bruge App-formler
Historisk har mange forfattere lagt et stort antal beregninger i OnStart. Når du placerer et udtryk i OnStart, tvinger det Power Apps til at køre det udtryk, præcis når appen starter og før alt andet. Men med introduktionen af App.Formulas kan du lade Power Apps afgøre, hvornår et udtryk skal køres. Power Apps kan køre formlen 'Just-in-time', før det er nødvendigt. Du kan finde flere oplysninger under App-formler. Brug App.Formulas til at dele din formel op i stykker, som Power Apps kan arrangere mere effektivt til udførelse.
Brug Samtidig
Brug Samtidig-funktionen til at tillade, at formler udføres på samme tid. Det er almindeligt at bruge denne funktion til at udfylde samlinger, da det giver mulighed for parallel eksekvering. Selvom dette kan give nogle beskedne hastigheder, kan tilføjelse af mange datakilder forårsage problemer med timing og drosling.
Brug forbedret ydeevne for skjulte kontrolelementer
Når det er aktiveret som standard i alle nye apps, der er oprettet siden december 2022, gengiver Power Apps ingen kontrol, der ikke er synlig i starten.
Minimere nødvendige ressourcer
Minimer de nødvendige ressourcer for at starte din app eller skærm. Denne indsats omfatter omhyggelig scoping eller opdeling af de ressourcer, din app eller skærm har brug for. Nedenfor er flere tilgange til at hjælpe dig.
Brug en startskærm med lav afhængighed og eliminer ubrugte skærme.
Brug en første skærm med lav afhængighed, såsom en velkomst på din ansøgning. Opret en skærm, der ikke indlæser et galleri eller en tabel eller referencedata. Dette styrer brugerens opfattelse af hastighed og giver Power Fx mulighed for korrekt at forsinke nogle beregninger til senere. Hvis du har ubrugte skærme, skal du fjerne dem.
Hold afhængigheder på tværs af skærme mellem skærme lav
Henvisninger på tværs af sider tvinger belastningen af yderligere sider via referencer, for eksempel henvisninger til kontroller på sider og indsættelse i samlinger. Nogle referencer kan være uundgåelige. Centraliser almindelige referencer til en enkelt side, hvis det er muligt, så kun siden indlæses.
Overvej indlejrede medier
Forfattere indlejrer nogle gange medier i deres apps for at sikre hurtig indlæsning. Hvis du har indlejrede medier, skal du overveje, om du bruger det eller ej. Hvis ikke, skal du slette den. Hvis du har indlejret en .png-fil, kan du overveje at erstatte en .svg-fil, som er mindre. Bemærk, at hvis du bruger en .svg, skal skrifttypen til .svg være på klientmaskinen. Overvej den indlejrede medieopløsning. Er den for høj til den enhed, den skal bruges på?
Glem ikke App.StartScreen
Hvis du bruger App.StartScreen, skal du sikre dig, at den første skærm er en tom skærm. På grund af den aktuelle pakke af appen, er den første logiske skærm altid bundtet med app-init-logikken og vil blive initialiseret, uanset om vi nogensinde navigerer til den.
Overvej at dele appen op
Hvis din app er stor, kan du overveje at opdele den i mindre apps. Hvis funktionaliteten er adskilt nok i forskellige dele af din app, kan denne tilgang muligvis fungere. I dette scenarie opretter du en faktisk separat app, som du starter med parametre, der inkluderer kontekst fra den første eller overordnede app.
Forslag
For at nå målet om en hurtig app og sidestart skal du overveje følgende spørgsmål og forslag:
- Indlæser du masser af data på en første skærm? Kan du bruge en anden første skærm?
- Kører du mange kommandoer eller Power Fx-udtryk i begyndelsen af app-indlæsningen? Kan du udskyde disse kommandoer og udtryk til et senere tidspunkt i applikationen? Vil du kun hente de data, der er nødvendige, for at appen kan starte? 1 Kan du konvertere udtryk i App.OnStart til navngivne formler med App.Formulas? Dette tillader Power Fx at beslutte, hvornår formlen rent faktisk skal udføres i stedet for at tvinge den til at ske ved indlæsning eller navigering af begivenheder.
- Kan du bruge et separat Power Automate-flow for at oprette en midlertidig tabel i en lokal datalager som f.eks. Dataverse, der kombinerer data fra forskellige kilder? Og så få adgang til disse data i din Power App?
- Til start af forretningsprocesser, kan du bruge serverudløste handlinger i stedet for at kalde et Power Automate Flow?
- Kan du oprette en visning på serveren, der forbinder dataene for dig?
- Hvis du vil bruge offline data i din app, kan du bruge offline Power Apps-funktionen, der fungerer med Dataverse? Hvis dine data ikke er i Dataverse, kan du flytte den dertil?