Tipps und bewährte Methoden zur Verbesserung der Leistung Ihrer Canvas-App verwenden

In den vorherigen Artikeln haben Sie etwas über die Ausführungsphasen und Datenaufruffluss, häufige Ursachen für langsame Leistung, und häufige Leistungsprobleme und Lösungen in Canvas-Apps erfahren. Sie können auch davon profitieren, wenn Sie die Tipps und bewährten Verfahren in diesem Artikel befolgen, um die Leistung der Apps, die Sie erstellen, zu steigern.

Einschränken von Datenverbindungen

Stellen Sie in ein und derselben App nicht mehr als 30 Verbindungen mit Datenquellen her. Apps fordern neue Benutzer auf, sich bei jedem Konnektor anzumelden, sodass jeder zusätzliche Konnektor die Zeit erhöht, die die App zum Starten benötigt. Während der Ausführung einer App erfordert jeder Connector CPU-Ressourcen, Arbeitsspeicher und Netzwerkbandbreite, wenn die App Daten aus einer Quelle anfordert.

Sie können die Leistung Ihrer App schnell messen, indem Sie während der Ausführung der App die Entwicklertools in Microsoft Edge oder Google Chrome aktivieren. Ihre App benötigt wahrscheinlich mehr als 15 Sekunden für die Datenrückgabe, wenn sie häufig Daten aus mehr als 30 Datenquellen wie Microsoft Dataverse, Azure SQL, SharePoint und Excel on OneDrive anfordert.

Beschränken der Anzahl von Steuerelementen

Fügen Sie einer App nicht mehr als 500 Steuerelemente hinzu. Power Apps generiert ein HTML-Dokumentobjektmodell, um jedes Steuerelement zu rendern. Je mehr Steuerelemente Sie hinzufügen, desto mehr Zeit benötigt Power Apps zum Generieren.

Sie können in einigen Fällen das gleiche Ergebnis erzielen und für einen schnelleren App-Start sorgen, wenn Sie anstelle von einzelnen Steuerelementen einen Katalog verwenden. Darüber hinaus sollten Sie die Anzahl von Steuerelementtypen im gleichen Bildschirm reduzieren. Einige Steuerelemente (z. B. PDF-Viewer, Datentabellen und Kombinationsfelder) benötigen umfassende Ausführungsskripts, und es dauert länger, sie zu rendern.

Optimieren Sie die OnStart-Eigenschaft

Verwenden Sie die ClearCollect-Funktion, um Daten lokal zwischenzuspeichern, wenn sie während der Benutzersitzung nicht geändert werden. Verwenden Sie auch die Funktion Gleichzeitig zum gleichzeitigen Laden von Datenquellen; dies kann die Zeit, die eine App zum Laden von Daten benötigt, halbieren. Mehr Informationen: Gleichzeitige Funktion in Power Apps

Ohne die Funktion Gleiczeitig lädt die folgende Formel jede der vier Tabellen einzeln:

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

Sie können dieses Verhalten in den Entwicklertools für Ihren Browser bestätigen, wie in der folgenden Abbildung dargestellt.

Diagramm mit den vier Tabellen, die nacheinander geladen werden

Sie können diese Formel in die Concurrent-Funktion einschließen, um die gesamte Ausführungsdauer des Vorgangs zu reduzieren:

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

Mit dieser Änderung ruft die App die Tabellen parallel ab, wie in der folgenden Abbildung dargestellt.

Diagramm mit den vier Tabellen, die gleichzeitig geladen werden

Hinweis

Für weitere Informationen zu den Leistungsproblemen und Lösungen im Zusammenhang mit OnStart lesen Sie OnStart-Ereignis braucht Tuning.

Zwischenspeichern von Suchdaten

Verwenden Sie die Set-Funktion, um Daten aus Nachschlagetabellen lokal zwischenzuspeichern und so ein wiederholtes Abrufen von Daten aus der Quelle zu vermeiden. Diese Technik optimiert die Leistung, wenn sich die Daten während einer Sitzung voraussichtlich nicht ändern. Wie in diesem Beispiel gezeigt werden die Daten einmal aus der Quelle abgerufen. Danach wird lokal auf die Daten verwiesen, bis der Benutzer die App schließt.

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

Diese Methode ist sinnvoller für Daten wie Kontaktinformationen, Standardwerte oder Benutzerinformationen, die sich nicht häufig ändern. Sie können diese Technik auch mit den Funktionen Defaults und User verwenden.

Vermeiden von Steuerelementen zwischen Bildschirmen

Um die Leistung zu verbessern, werden die Bildschirme einer App nur dann in den Speicher geladen, wenn sie benötigt werden. Diese Optimierung kann behindert werden, wenn beispielsweise Bildschirm 1 geladen wird und eine seiner Formeln die Eigenschaft eines Steuerelements von Bildschirm 2 verwendet. Jetzt muss Bildschirm 2 geladen werden, um die Abhängigkeit zu erfüllen, bevor Bildschirm 1 angezeigt werden kann. Stellen Sie sich vor, Bildschirm 2 hat eine Abhängigkeit von Bildschirm 3, die eine andere Abhängigkeit von Bildschirm 4 hat, und so weiter. Diese Abhängigkeitskette kann dazu führen, dass viele Bildschirme geladen werden.

Vermeiden Sie aus diesem Grund Formelabhängigkeiten zwischen Bildschirmen. In einigen Fällen können Sie eine globale Variable oder Sammlung verwenden, um Informationen zwischen Bildschirmen auszutauschen.

Es gibt eine Ausnahme: Stellen Sie sich im vorherigen Beispiel vor, dass Bildschirm 1 nur durch Navigieren von Bildschirm 2 angezeigt werden kann. Dann wurde Bildschirm 2 bereits in den Speicher geladen, wenn Bildschirm 1 geladen werden soll. Es ist keine zusätzliche Arbeit erforderlich, um die Abhängigkeit für Bildschirm 2 zu erfüllen, und daher gibt es keine Auswirkungen auf die Leistung.

Verwenden der Delegierung

Verwenden Sie nach Möglichkeit Funktionen, die die Datenverarbeitung an die Datenquelle delegieren, anstatt Daten zur Verarbeitung auf das lokale Gerät abzurufen. Wenn eine App Daten lokal verarbeiten muss, benötigt dieser Vorgang wesentlich mehr Verarbeitungsleistung, Arbeitsspeicher und Netzwerkbandbreite, insbesondere bei großen Datasets.

Tipp

Informationen zu delegierbaren Funktionen, die von bestimmten Konnektoren unterstützt werden, finden Sie unter Anschlussdokumentation.

Betrachten Sie als Beispiel für delegierbare Funktionen eine ID-Spalte, die als die Datentyp Nummer in einer SharePoint Liste definiert ist. Formeln im folgenden Beispiel geben die Ergebnisse wie erwartet zurück. Die erste Formel ist jedoch delegierbar, während die zweite nicht delegierbar ist.

Formel Delegierbar?
Filter ('SharePoint list data source', ID = 123 ) Ja
Filter(`SharePoint list data source', ID ="123") Nein

Weil wir davon ausgehen, dass die ID-Spalte in SharePoint mit dem Datentyp der Nummer definiert wird, sollte der Wert auf der rechten Seite eine numerische Variable anstelle einer Zeichenfolgenvariablen sein. Andernfalls kann diese Nichtübereinstimmung dazu führen, dass die Formel nicht delegierbar ist.

Die Verwendung von Nicht delegierbare Funktionen und unangemessene Datenzeilenbeschränkungen für nicht delegierbare Abfragen kann sich negativ auf die Leistung der App auswirken. Mehr Informationen: Delegation in einer Canvas-App verstehen

Verwenden des verzögerten Ladens

Aktivieren Sie die experimentelle Funktion für das verzögerte Laden, wenn Ihre App über mehr als 10 Bildschirme, keine Regeln und viele Steuerelemente verfügt, die sich auf mehreren Bildschirmen befinden und direkt an die Datenquelle gebunden sind. Wenn Sie diese Art App erstellen und dieses Feature nicht aktivieren, könnte die App-Leistung beeinträchtigt werden, weil die Steuerelemente in allen Bildschirmen aufgefüllt werden müssen, auch in Bildschirmen, die gar nicht geöffnet sind. Darüber hinaus müssen alle Bildschirme der App aktualisiert werden, sobald sich die Datenquelle ändert, weil beispielsweise der Benutzer einen Datensatz hinzufügt.

Arbeiten mit großen Datenmengen

Verwenden Sie Datenquellen und Formeln, die delegiert werden können, um die Leistungsfähigkeit Ihrer Apps zu sichern, dafür zu sorgen, dass Benutzer auf alle benötigten Informationen zugreifen können, und die maximale Anzahl von 2.000 Datenzeilen für nicht delegierbare Abfragen nicht zu überschreiten. Für Datensatzspalten, auf denen Benutzer Daten suchen, filtern oder sortieren können, verwenden Sie Indizes auf Spalten, wie von den Datenquellen beschrieben, z. B. SQL Server oder SharePoint.

Hinweis

Weitere Informationen darüber, wie große Datenmengen auf verschiedenen Plattformen häufig zu Leistungsproblemen führen können, finden Sie unter Große Datenmengen werden langsam auf verschiedenen Plattformen geladen.

Regelmäßiges erneutes Veröffentlichen von Apps

Hersteller werden aufgefordert, ihre Apps regelmäßig zu veröffentlichen. Weil die Power Apps Plattform kontinuierlich optimiert und bereitgestellt wird, wird Ihre App im Rahmen der neuesten Plattformoptimierungen neu generiert, wenn Sie sie erneut veröffentlichen.

Vermeiden, dieselbe Formel an mehreren Stellen zu wiederholen

Wenn mehrere Eigenschaften dieselbe Formel ausführen (insbesondere wenn sie komplex sind), sollten Sie sie einmal festlegen und dann in den folgenden auf die Ausgabe der ersten Eigenschaft verweisen. Legen Sie z. B. die Eigenschaft DisplayMode der Steuerelemente A, B, C, D und E nicht auf dieselbe komplexe Formel fest. Legen Sie stattdessen die DisplayMode-Eigenschaft von A auf die komplexe Formel fest, die DisplayMode-Eigenschaft von B auf das Ergebnis der DisplayMode-Eigenschaft von A und so weiter für C, D und E.

Aktivieren von DelayOutput für alle Texteingabesteuerelemente

Wenn Sie mehrere Formeln oder Regeln haben, die auf den Wert eines Text input-Steuerelements verweisen, legen Sie die DelayedOutput-Eigenschaft dieses Steuerelements auf „true“ fest. Die Text-Eigenschaft dieses Steuerelements wird erst dann aktualisiert, wenn die in schneller Folge eingegebenen Tastenanschläge beendet sind. Die Formeln oder Regeln werden nicht so oft ausgeführt und die App-Leistung wird verbessert.

Vermeiden der Verwendung von Form.Updates in Regeln und Formeln

Wenn Sie einen Benutzer-Eingabewert in einer Regel oder einer Formel mit Hilfe einer Form.Updates Variablen referenzieren, wird über alle Datenkarten des Formulars iteriert und jedes Mal ein Datensatz erstellt. Um Ihre App effizienter zu gestalten, verweisen Sie auf den Wert direkt von der Datenkarte oder dem Steuerelementwert.

Je nach Konfiguration kann das Rendern der sichtbaren Zeilen im Katalog länger dauern. Es gibt verschiedene Möglichkeiten, die Leistung zu verbessern.

  • Vereinfachen Sie die Vorlage. Reduzieren Sie beispielsweise die Anzahl der Steuerelemente und Verweise auf Suchvorgänge.
  • Kataloge mit komplexen Vorlagen können davon profitieren, wenn DelayItemLoading auf True und LoadingSpinner auf LoadingSpinner.Controls festgelegt ist. Diese Änderung verbessert die wahrgenommene Erfahrung, wenn die Zeit beim Rendern länger ist. DelayItemLoading verschiebt außerdem das Rendern von Vorlagen, sodass der Rest des Bildschirms schneller gerendert werden kann, da sowohl Bildschirm als auch Katalog nicht um Ressourcen konkurrieren.

Nächste Schritte

Überprüfen Sie die Kodierungsstandards zur Maximierung der App-Leistung und zur einfacheren Wartung von Apps.

Siehe auch

Grundlegende Informationen zu Ausführungsphasen und Datenaufrufflüssen
Gängige Probleme mit der Leistung von Canvas Apps und Lösungen
Allgemeine Quellen für langsame Leistung einer Canvas App
Allgemeine Probleme und Lösungen für Power Apps
Fehlerbehebung bei Startproblemen für Power Apps