Tips og anbefalte fremgangsmåter for å forbedre ytelsen til lerretsapper

I de forrige artiklene har du lært om utførelsesfasene og datakallflyten, vanlige kilder til langsom ytelse og vanlige ytelsesproblemer/-løsninger i lerretsapper. Du kan også dra nytte av å følge tips og gode fremgangsmåter i denne artikkelen for å øke ytelsen til apper du oppretter.

Begrense datatilkoblinger

Ikke legg til flere enn 30 tilkoblinger i én app. Apper ber nye brukere om å logge seg på hver kobling. Hver ekstra kobling øker derfor tiden det tar før appen starter. Når appen kjøres, krever hver kobling prosessorressurser, minne og nettverksbåndbredde når appen ber om data fra den kilden.

Du kan raskt måle appens ytelse ved å slå på Utviklerverktøy i Microsoft Edge eller Google Chrome mens appen kjøres. Det er mer sannsynlig at appen din bruker mer enn 15 sekunder på å returnere data hvis den ofte ber om data fra mer enn 30 tilkoblinger. Hver tilkobling som legges til, telles individuelt i denne grensen, uansett type tilkoblet datatype, for eksempel Microsoft Dataverse eller SQL Server-tabeller, eller lister som er opprettet ved hjelp av Microsoft Lister.

Begrens antallet kontroller

Ikke legg til flere enn 500 kontroller i én app. Power Apps genererer en HTML-dokumentobjektmodell for å gjengi hver kontroll. Jo flere kontroller du legger til, jo mer genereringstid trenger Power Apps.

Du kan, i enkelte tilfeller, oppnå det samme resultatet og få appen til å starte raskere, hvis du bruker et galleri i stedet for individuelle kontroller. Du kan også redusere antallet kontrolltyper på den samme skjermen. Noen kontroller (som PDF-visningsprogrammet, datatabellen og kombinasjonsboksen) samler inn store kjøringsskript, og det tar lenger tid å gjengi dem.

Optimaliser OnStart-egenskapen

Bruk ClearCollect-funksjonen til å bufre data lokalt, hvis de ikke endres i løpet av brukerøkten. Bruk også Concurrent-funksjonen til å laste inn datakilder samtidig. Dette kan halvere tiden en app trenger for å laste inn data. Mer informasjon: Concurrent-funksjon i Power Apps

Uten Concurrent-funksjonen så laster denne formelen fire tabeller, én etter én:

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

Du kan bekrefte denne virkemåten i utviklerverktøyene for nettleseren, som vist på følgende bilde.

Diagram som viser de fire tabellene som blir lastet inn etter hverandre.

Du kan legge inn den samme formelen i Concurrent-funksjonen for å redusere den totale tiden operasjonen trenger:

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

Med denne endringen henter appen tabellene parallelt, som vist på følgende bilde.

Diagram som viser de fire tabellene som blir lastet inn samtidig.

Obs!

Hvis du vil ha mer informasjon om ytelsesproblemer og løsninger som er relatert til OnStart, kan du lese OnStart-hendelsen må justeres.

Tips

Vi anbefaler at du bruker App.StartScreen-egenskapen siden den forenkler applanseringen og øker appens ytelse.

Hurtigbufre oppslagsdata

Bruk Angi-funksjonen til å bufre dataene fra oppslagstabeller for å unngå gjentatt henting av data fra kilden. Denne teknikken optimaliserer ytelsen hvis dataene sannsynligvis ikke endres under en økt. Som vist i dette eksemplet så hentes dataene fra kilden én gang, og deretter refereres det til dataene lokalt, helt til brukeren lukker appen.

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

Denne metoden er mer nyttig for data som kontaktinformasjon, standardverdier eller brukerinformasjon som ikke endres ofte. Du kan også bruke denne teknikken med Standard og Bruker-funksjonen.

Unngå kontrollavhengighet mellom skjermbilder

For å forbedre ytelsen lastes skjermbildene i en app inn i minnet bare etter behov. Denne optimaliseringen kan brukes hvis for eksempel skjerm 1 lastes inn og en av formlene bruker egenskapen for en kontroll fra skjerm 2. Skjerm 2 må nå lastes inn for å fullføre avhengigheten før skjerm 1 kan vises. Forestill deg skjerm 2 har en avhengighet på skjerm 3, som har en annen avhengighet på skjerm 4 og så videre. Denne avhengighetskjeden kan føre til at mange skjermer blir lastet inn.

På grunn av dette unngår du aktivitetsavhengigheter mellom skjermer. I noen tilfeller kan du bruke en global variabel eller samling til å dele informasjon mellom skjermer.

Det finnes et unntak: I det foregående eksemplet forestiller du deg at den eneste måten å vise skjerm 1 på, er å navigere fra skjerm 2. Deretter er skjerm 2 allerede lastet inn i minnet når skjerm 1 skal lastes inn. Det er ikke nødvendig å utføre noe ekstra arbeid for å fullføre avhengigheten for skjerm 2, og dermed er det ingen ytelsespåvirkning.

Bruk delegering

Bruk funksjoner, hvis mulig, som delegerer databehandling til datakilden, i stedet for å hente data til den lokale enheten for behandling. Hvis en app må behandle data lokalt, krever operasjonen mye mer prosessorkraft, minne og nettverksbåndbredde, spesielt hvis datasettet er stort.

Tips

Hvis du vil vite mer om delegerbare funksjoner som støttes av bestemte koblinger, kan du se koblingsdokumentasjonen.

Hvis du vil se et eksempel på delegerbare funksjoner, kan du vurdere en ID-kolonne Nummer-datatype i en liste som er opprettet ved hjelp av Microsoft Lister. Formler i eksemplet nedenfor returnerer resultatene som forventet. Den første formelen kan imidlertid delegeres, mens den andre ikke kan delegeres.

Formel Delegerbar?
Filter ('List data source', ID = 123 ) Ja
Filter(`List data source', ID ="123") Nei

Når vi antar at ID-kolonnen i SharePoint defineres med datatypen Tall, må verdien på høyre side være en numerisk variabel i stedet for en strengvariabel. Ellers kan en slik konflikt utløse formelen til å være ikke-delegerbar.

Bruk av ikke-delegerbare funksjoner og uegnet dataradgrenser for ikke-delegerbare spørringer kan ha negativ innvirkning på ytelsen til appen. Mer informasjon: Forstå delegering i en lerretsapp

Bruk forsinket innlesing

Slå på forhåndsversjonsfunksjonen for forsinket innlasting hvis appen har flere enn ti skjermbilder, ingen regler, og mange kontroller på flere skjermer, og som er direkte knyttet til datakilden. Hvis du bygger denne apptypen og ikke aktiverer denne funksjonen, kan appytelsen forringes fordi kontrollene på alle skjermbildene må forhåndsutfylles, selv på skjermbilder som ikke er åpne. Alle skjermbildene i appen må oppdateres når datakilden endres, som når brukeren legger til en post.

Arbeid med store datasett

Bruk datakilder og formler som kan delegeres, slik at appen fungerer bra, samtidig som brukerne får tilgang til all informasjonen de trenger, og at de unngår å nå grensen på 2000 for ikke-delegerbare spørringer. For dataoppføringskolonner der brukere kan søke etter, filtrere eller sortere data, bruker du indekser på kolonner som beskrevet av datakildene, for eksempel SQL Server eller SharePoint.

Obs!

Hvis du vil ha mer informasjon om hvordan store datasett kan forårsake vanlige ytelsesproblemer på ulike plattformer, kan du lese Store datasett som lastes langsomt på forskjellige plattformer.

Publiser apper på nytt jevnlig

Beslutningstakere oppfordres til å publisere appene sine regelmessig. Fordi Power Apps-plattformen optimaliseres og distribueres kontinuerlig, genereres appen på nytt i de nyeste plattformoptimaliseringene når du publiserer den på nytt.

Unngå å gjenta samme formel på flere steder

Hvis flere egenskaper kjører samme formel (særlig hvis den er kompleks), kan du angi den én gang og deretter referere til utdataene for den første egenskapen i etterfølgende egenskaper. Du kan for eksempel ikke sette DisplayMode-egenskapen for kontrollene A, B, C, D og E til den samme komplekse formelen. I stedet angir du DisplayMode-egenskap for A til den komplekse formelen, angir DisplayMode-egenskap for B til resultatet av DisplayMode-egenskapen for A og så videre for C, D og E.

Aktiver DelayOutput for alle Tekstinndata-kontroller

Hvis du har flere formler eller regler som refererer til verdien for en Tekstinndata-kontroll, setter du DelayedOutput-egenskapen for den kontrollen til sann. Egenskapen Text for kontrollen oppdateres bare etter at tastetrykk som er angitt i rask rekkefølge, har stoppet. Formlene eller reglene kjører ikke så mange ganger, og appytelsen blir bedre.

Unngå å bruke Form.Updates i regler og formler

Hvis du refererer til en brukerinndataverdi i en regel eller en formel ved hjelp av en Form.Updates-variabel, går den over alle datakortene i skjemaet og oppretter en oppføring hver gang. Hvis du vil gjøre appen mer effektiv, refererer du til verdien direkte fra datakortet eller kontrollverdien.

Bruke DelayItemLoading og innlastingsspinner for å forbedre ytelsen i galleriet

Avhengig av konfigurasjonen kan Galleri bruke mer tid på å gjengi de synlige radene. Du kan forbedre ytelsen på flere måter.

  • Forenkle malen. Vurder for eksempel å redusere antall kontroller, referanser til oppslag.
  • Gallerier med komplekse maler kan dra nytte av at DelayItemLoading er satt til Sann, og at LoadingSpinner er satt til LoadingSpinner.Controls. Denne endringen vil forbedre den opplevde opplevelsen når gjengivelsestiden er lengre. DelayItemLoading utsetter også gjengivelsen av maler, noe som gjør at resten av skjermen kan gjengis raskere fordi skjermen og galleriet ikke konkurrerer om ressurser.

Aktivere Forhåndslast app for forbedret ytelse

Du kan eventuelt forhåndslaste appen for å øke ytelsen.

  1. Logg på Power Apps og velg deretter Apper i menyen.

  2. Velg Flere handlinger (...) for appen du vil dele, og velg deretter Innstillinger.

  3. I Innstillinger-panelet setter du veksleknappen for Forhåndslast appen for forbedret ytelse til Ja. Appen lastes deretter inn på nytt.

Forhåndslast app for forbedret ytelse.

  1. For at endringene skal tre i kraft for apper innebygd i Teams, må du fjerne og legge til appen i Teams på nytt.

    Obs!

    Dette gjør de kompilerte appressursene tilgjengelige via ikke-godkjenningsendepunkter for å aktivere lasting før godkjenning. Brukere kan imidlertid fortsatt bare bruke appen til å få tilgang til data via kontakter bare etter at godkjenning og autorisasjon er fullført. Denne virkemåten sikrer at dataene som en app henter fra datakildene, ikke blir tilgjengelige for brukere som ikke er godkjent. Kompilerte appressurser omfatter en samling JavaScript-filer som inneholder tekst skrevet i appkontroller (f.eks. PCF-kontroller), medieressurser (f.eks. bilder), appnavnet og nettadressen for miljøet som appen er i.

    Apper skal generelt hente medier og informasjon fra datakilder gjennom tilkoblinger. Hvis medier og informasjon må legges til i appen, uten å komme fra en tilkobling, og det anses som sensitivt, kan du deaktivere denne innstillingen. Hvis du deaktiverer denne innstillingen, vil det føre til at brukere venter litt lenger for å få tilgang til en app.

Appdata lagret på enheten

For at brukere skal kunne hente appdetaljer raskere når appen starter, lagres bestemte data lokalt på enheten i nettleserbufferen. Informasjon som lagres, omfatter app-, miljø- og tilkoblingsdetaljer. Disse dataene lagres i nettleseren basert på lagringsgrensene for hver nettleser. Hvis du vil fjerne lagrede data, kan du se instruksjoner for hver nettleser.

Neste trinn

Se gjennom kodestandardene for å få mest mulig ut av ytelsen til appen, og gjør apper enklere å vedlikeholde.

Se også

Forstå kjørefaser og datakallflyter for lerretsapper
Vanlige ytelsesproblemer og løsninger for lerretsapper
Vanlige kilder til treg ytelse for en lerretsapp
Vanlige problemer og løsninger for Power Apps
Feilsøk oppstartsproblemer for Power Apps

Obs!

Kan du fortelle oss om språkinnstillingene for dokumentasjonen? Ta en kort undersøkelse. (vær oppmerksom på at denne undersøkelsen er på engelsk)

Undersøkelsen tar rundt sju minutter. Det blir ikke samlet inn noen personopplysninger (personvernerklæring).