Tips och metodtips för att förbättra prestanda för arbetsyteappar

I de tidigare artiklarna lärde du dig mer om körningsfaserna och datasamtalsflödet, vanliga källor till långsam prestanda och vanliga prestandafrågor/upplösningar i arbetsyteappar. Du kan också ha nytta av att följa tipsen och metodtipsen i den här artikeln för att öka prestandan för appar som du skapar.

Begränsa dataanslutningar

Lägg inte till fler än 30 anslutningar i en app. Appar uppmana nya användare att logga in på varje anslutning, så att varje ytterligare anslutningsprogram ökar mängden tid som appen behöver för att starta. Eftersom en app körs, kräver varje anslutningsapp CPU-resurser, minne och nätverksbandbredd när appen begär data från den källan.

Du kan snabbt mäta din apps prestanda genom att aktivera utvecklarverktyg i Microsoft Edge eller Google Chrome vid körning av appen. Det är troligare att appen tar längre än 15 sekunder att returnera data om den ofta begär data från mer än 30 anslutningar. Varje ansluten anslutning räknas individuellt i den här gränsen, oavsett datakälla anslutningstypsom—som Microsoft Dataverse eller SQL Server-tabeller eller listor som skapas med Microsoft Lists.

Begränsa antalet kontroller

Lägg inte till fler än 500 kontroller i en app. Power Apps skapar en HTML-dokument objektmodell för rendering av varje kontroll. Ju fler kontroller som du lägger till, desto längre generationstid behöver Power Apps.

Du kan i vissa fall kan uppnå samma resultat och få appen att starta snabbare om du använder ett galleri istället för enskilda kontroller. Dessutom kan du minska antalet kontrolltyper på samma skärm. Vissa kontroller (som PDF-visningsprogram, datatabell och kombinationsruta) drar in stora körningsskript och tar längre tid att rendera.

Optimera OnStart-egenskapen

Använd funktionen ClearCollect för att cachelagra data lokalt om det inte ändras under användarens session. Du kan även använda funktionen Samtidig för att läsa datakällor samtidigt; detta kan minska den tid en app behöver för att ladda data i hälften. Mer information: Samtidig funktion i Power Apps

Utan funktionen samtidiga läser den här formeln in var och en av fyra tabeller en i taget:

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

Du kan bekräfta detta beteende i utvecklarverktygen för webbläsaren (se bilden nedan).

Diagram som visar de fyra tabeller som läses in en efter en.

Du kan bädda in formeln i funktionen Samtidiga för att minska den totala tid som krävs för åtgärden:

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

Med den här förändringen hämtar appen tabellerna samtidigt, vilket du kan se i följande bild.

Diagram som visar de fyra tabellerna som laddas samtidigt.

Anteckning

Mer information om prestandaproblem och lösningar relaterade till OnStart finns i OnStart-händelse kräver justering.

Dricks

Vi rekommenderar att du använder egenskapen App.StartScreen eftersom den förenklar appstart och ökar appens prestanda.

Cachedata för sökning

Använd funktionen Ange för att cachelagra data från söktabeller lokalt för att undvika upprepade datahämtningar från källan. Den här tekniken optimerar prestanda om data förmodligen inte kommer att ändras under en session. Som i följande exempel så hämtas data från källan en gång och refereras sedan till lokalt efter det, tills dess att användaren stänger 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);

Den här metoden är mer användbar för data som kontaktinformation, standardvärden eller användarinformation som inte ändras ofta. Så du kan generellt sätt använda den här tekniken med funktionerna Standardvärden och Användare.

Undvika kontrollberoende mellan skärmarna

För att förbättra prestanda läses skärmarna i en app in i minnet endast när de behövs. Den här optimeringen kan användas om till exempel skärm 1 läses in och en av dess formeln använder egenskapen för en kontroll från skärm 2. Nu måste skärm 2 vara inläst för att du ska kunna uppfylla beroendet innan skärm 1 kan visas. Anta att skärm 2 är beroende av skärm 3, som har ett annat beroende på skärm 4 och så vidare. Den här beroende kedjan kan orsaka att många skärmar läses in.

Därför undviker du formel beroenden mellan skärmar. I vissa fall kan du använda en global variabel eller samling för att dela information mellan skärmar.

Det finns ett undantag: I föregående exempel föreställer du dig att det enda sättet att visa skärm 1 är att navigera från skärm 2. Då har skärm 2 redan lästs in i minnet när skärm 1 ska läsas in. Det behövs inget extra arbete för att uppfylla beroendet för skärm 2 och därför påverkas inte prestandan.

Använd delegering

Om möjligt, använder du funktioner som delegerar databehandling till datakällan istället för att hämta data till den lokala enheten för bearbetning. Om en app måste bearbeta data lokalt, kräver åtgärden mycket mer processorkraft, minne och nätverksbandbredd, särskilt om datauppsättningen är stor.

Dricks

Mer information om delegerbara funktioner som stöds av specifika anslutningar finns i dokumentationen för anslutningsprogram.

Ett exempel på delegerade funktioner kan vara en ID-kolumn som har definierats som datatypen Nummer i en lista som skapats med Microsoft Lists. Formeln i följande exempel returnerar resultatet som förväntat. Den första formeln är emellertid delegerbar, medan den andra inte är det.

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

När vi antar att ID-kolumnen i SharePoint definieras med datatypen Antal ska värdet på höger sida vara numerisk variabel i stället för strängvariabel. Annars kan en sådan matchning leda till att formeln inte kan delegeras.

Användning icke-delegerbara funktioner och begränsning för icke-delegerade frågor kan påverka appens prestanda negativt. Mer information: Förstå delegering i en arbetsyteapp

Använd fördröjd inläsning

Aktivera den förhandsversionsfunktionen för fördröjd inläsning om din app har fler än 10 skärmar, inga regler och många kontroller som finns på flera skärmar och som är direkt kopplade till datakällan. Om du skapar den här typen av app och inte aktiverar den här funktionen så kan appens prestanda försämras eftersom kontrollerna i alla skärmar måste fyllas i även på skärmar som inte är öppna. Dessutom måste alla skärmar i appen uppdateras när datakällan ändras, till exempel när användaren lägger till en post.

Arbeta med stora datauppsättingar

Använd datakällor och formler som kan delegeras så att dina program fungerar bra medan användare kan komma åt den information de behöver och undvika att nå dataradsgränsen på 2000 för frågor som inte kan delegeras. För kolumner med dataposter som användarna kan söka i, filtrera eller sortera data på använder du index i kolumner enligt beskrivningen av datakällorna SQL Server or SharePoint.

Anteckning

För ytterligare information om hur stora datamängder kan orsaka vanliga prestandaproblem på olika plattformar, läs Stora datamängder laddas långsamt på olika plattformar.

Ompublicera appar regelbundet

Utvecklare uppmanas att publicera sina appar regelbundet. Eftersom Power Apps-plattformen kontinuerligt optimeras och distribueras återskapas appen inom de senaste plattformsoptimeringarna när du publicerar den på nytt.

Undvik att upprepa samma formel på flera platser

Om flera egenskaper kör samma formel (speciellt om den är komplex) bör du överväga att ange den en och sedan referera till resultatet av den första egenskapen i efterföljande fält. Ange till exempel inte egenskapen DisplayMode för kontrollerna A, B, C, D och E i samma komplexa formel. I stället kan du ange en egenskap DisplayMode för A till den komplexa formeln, ange B DisplayMode-egenskapen till resultatet för A DisplayMode-egenskapen och så vidare för C, D och E.

Aktivera DelayOutput för alla Textinmatning-kontroller

Om du har flera formler eller regler som refererar till värdet för en kontroll för Textinmatning anger du värdet true för egenskapen DelayedOutput för den kontrollen. Egenskapen Text av den kontrollen kommer att uppdateras först efter att tangenttryckningar som angetts i snabb följd har stoppats. Formlerna eller reglerna körs inte så många gånger och programprestanda förbättras.

Undvik att använda Form.Updates i regler och formler

Om du refererar till ett användarinmatningsvärde i en regel eller en formel med hjälp av en Form.Updates variabel, itererar den över alla formulärets datakort och skapar en post varje gång. Om du vill göra appen mer effektiv refererar du till värdet direkt från datakortet eller kontrollvärdet.

Använda DelayItemLoading and Loading spinner för att förbättra prestandan i Galleriet

Beroende på konfigurationen kan det ta längre tid för Galleri att rendera de synliga raderna. Det finns några sätt att förbättra prestanda.

  • Förenkla mallen. Du kan till exempel överväga att minska antalet kontroller, referenser till sökningar.
  • Gallerier med komplexa mallar kan dra nytta av att ha DelayItemLoading anges till true och LoadingSpinner anges till LoadingSpinner.Controls. Ändringen förbättrar upplevelsen när återgivningstiden är längre. DelayItemLoading kommer också att skjuta upp rendering av mallar som gör att resten av skärmen kan renderas snabbare eftersom både skärm och galleri inte tävlar om resurser.

Aktivera förhandsinläsning av program för förbättrade prestanda

Du kan även förladda din app för att öka prestandan.

  1. Logga in på Power Apps och välj sedan appar på menyn.

  2. Välj Fler åtgärder (...) för det program du vill dela i Teams, och välj sedan Inställningar.

  3. I panelen panel Inställningar aktiverar Förladda app för utökad prestanda till Ja. Programmet kommer då att förinläsas.

Förhandsinläsning av appen för förbättrad prestanda.

  1. Du kan ta bort och lägga till ditt program i Teams igen för att ändringarna ska börja gälla för program som bäddat in i Teams.

    Anteckning

    Detta gör de kompilerade appresurser tillgängliga via oautenterade slutpunkter att aktivera inläsning av dem före autentisering. Men användare kan fortfarande bara använda appen för att få åtkomst till data via anslutningar först när autentiseringen och auktoriseringen är klar. Detta beteende säkerställer att data som en app hämtar från datakällor inte kommer att vara tillgänglig för oautentiserade användare. Kompilerade apptillgångar innehåller en samling JavaScript-filer som innehåller text skapad i appkontroller (t.ex. PCF-kontroller), medieresurser (till exempel bilder), appnamnet och den miljö-URL som appen finns i.

    Appar bör allmänt hämta media och information från datakällor via anslutningar. Om media och information måste läggas till i appen utan att det kommer från en anslutning och det anses som känsligt kanske du vill inaktivera den här inställningen. Obs! Om du inaktiverar den här inställningen får användarna vänta lite längre tid på att få åtkomst till en app.

Appdata lagrade på din enhet

Om du vill tillåta användare att snabbare hämta appinformation när appen startas, vissa data lagras lokalt på din enhet i webbläsarens cacheminne. Den information som kommer att lagras omfattar information om app, miljö och anslutning. Dessa data lagras i webbläsaren baserat på varje webbläsares lagringsbegränsningar. För att rensa lagrade data, se instruktioner för varje webbläsare.

Nästa steg

Granska kodstandarder för att maximera apprestanda och hålla appar lättare att underhålla.

Se även

Förstå körningsfaser och datasamtalsflöde i arbetsyteappar
Vanliga prestandaproblem och lösningar för arbetsyteappar
Vanliga källor till långsamma prestanda för en arbetsyteapp
Vanliga problem och lösningar för Power Apps
Felsöker startproblem för Power Apps

Anteckning

Kan du berätta om dina inställningar för dokumentationsspråk? Svara i en kort undersökning. (observera att undersökningen är på engelska)

Undersökningen tar ungefär sju minuter. Inga personuppgifter samlas in (sekretesspolicy).