Das Laden von Apps oder Seiten zum Erreichen von Spitzenleistung optimieren
Einer der Schlüsselfaktoren, die die Wahrnehmung einer App durch einen Benutzenden beeinflussen, ist, wie schnell sie geöffnet wird und einsatzbereit ist. Daher ist die Priorisierung dieses Ziels bei der Entwicklung einer leistungsstarken App von entscheidender Bedeutung. Um eine optimale App-Leistung zu erzielen, müssen drei Hauptbereiche beachtet werden:
- Schnelles Laden von Daten
- Effiziente Berechnungen
- Minimieren der erforderlichen Ressourcen
Jeder dieser Bereiche weist mehrere häufige Anti-Muster auf.
Schnelles Laden von Daten
Halten Sie sich an diese Richtlinien, um Apps schnell laden zu können.
Vermeiden, eine Sammlung direkt mit großen Datenmengen zu befüllen
Manchmal verwenden Autoren ClearCollect(), um Daten von einem Server in eine Sammlung in ihrer App zu kopieren. Diese Vorgehensweise ist eine Problemumgehung für Delegierungsbeschränkungen in der Quelle oder weil Sammlungen in der App für andere Zwecke verwendet werden sollen. Die Verwendung von ClearCollect() kann möglicherweise die Geschwindigkeit der App erhöhen, wenn die Sammlung später verwendet wird. Allerdings ist bei der Umsetzung Vorsicht geboten. Die Verwendung von ClearCollect auf diese Weise kann die Ladezeiten der App insgesamt oder beim Navigieren zwischen Seiten verlangsamen. ClearCollect() muss abgeschlossen sein, bevor Sie die Daten in einem Katalog oder einer Tabelle sehen können. Dieser Schritt kann lange dauern, wenn viele Daten vorhanden sind oder Sie diesen Ansatz für zu viele Datenquellen verwenden. Sammlungen eignen sich am besten für Situationen, in denen die Datenmenge klein ist und Sie viele Berechnungen für die Sammlung durchführen müssen. Ein guter Einsatz von Sammlungen ist beispielsweise ein Onlinewarenkorb. Der Kunde kann Artikel mehrmals aktualisieren und entfernen, bevor er den Auftrag abschließt. Darüber hinaus können Sie die Sammlung um weitere Datenelemente wie potenzielle Rabatte, Highlights usw. erweitern. Auf schreibgeschützte Daten sollte nativ zugegriffen werden, ohne dass sie in eine Sammlung aufgenommen werden.
Erwägen, den Aufruf von Power Automate zum Befüllen einer Sammlung zu vermeiden
Dieses Problem ist eine gewisse Variante des vorherigen Abschnitts. Manchmal verwenden Autoren Power Automate auch, um ihre Sammlung in Power Apps zu befüllen. Für die Instanziierung von Power Automate fallen Leistungseinbußen von etwa 0,6 Sekunden an. Power Automate muss bei jedem Aufruf unabhängig gestartet werden. Es muss Speicher zuweisen, mit den richtigen Komponenten ausgestattet und betriebsbereit sein. Wie bei den oben genannten Ratschlägen sind ein bis zwei Power Automate-Aufrufe je nach App möglicherweise kein Problem. Aber die Apps mit der schlechtesten Leistung verwenden diesen Ansatz fast immer zu häufig. Die Leistungseinbußen können sich schnell summieren und die Leistung Ihrer App beeinträchtigen.
Die Verwendung von SaveData() und LoadData() als vollständiges Offline-Szenario vermeiden
Einige Autoren verwenden ClearCollect() und dann SaveData(), um Daten für die universelle Offlineverwendung zu speichern. Sie können SaveData() verwenden, um die Sammlung auf Ihrem Gerät zu speichern, und LoadData(), um sie zu laden, wenn Sie offline sind. Dieser Ansatz wird jedoch nicht empfohlen, wenn große Datenmengen vorliegen oder die Daten komplex sind. Dadurch wird Ihre App langsamer, da sie den Abschluss von ClearCollect() abwarten muss, bevor die Daten angezeigt werden können. Sie sollten SaveData() und LoadData() nur für kleine und einfache Datenszenarien wie Präferenzen und kurze Listen verwenden. Eine bessere Möglichkeit, mit großen Mengen an Offlinedaten zu arbeiten, ist die Verwendung des Offlinefeatures von Power Apps, das mit Dataverse arbeitet. Mit diesem Feature können größere und komplexere Daten effizienter verarbeitet werden.
Explizite Spaltenauswahl verwenden
Die explizite Spaltenauswahl ist standardmäßig aktiviert. Einige Autoren schalten diese Funktion jedoch aus. Das Problem besteht darin, dass bei aktivierter expliziter Spaltenauswahl (ECS) manchmal Spalten nicht aus der Datenquelle abgerufen werden, wenn die Daten zuerst in eine Sammlung abgerufen werden. Da einige Tabellen möglicherweise viele Spalten enthalten, berechnet ECS anhand ihrer Verwendung in Steuerelementen (z. B. Katalogen und Formularen) automatisch, welche Spalten abgerufen werden müssen. Da einige Tabellen viele Spalten enthalten, kann eine Reduzierung der Downloadgröße die Leistung beschleunigen. Einige Tabellen können hundert oder mehr Spalten haben. Wenn Ihre App nur 10 Spalten verwenden muss und Sie alle Spalten aus einer Tabelle mit 100 Spalten reduzieren, reduzieren Sie zehnmal so viele Daten, wie Sie tatsächlich benötigen.
Die meisten Probleme treten beim Einbringen von Daten in Sammlungen auf. Wenn in einem Steuerelement explizit auf eine Spalte verwiesen wird, funktioniert ECS gut. Und ECS funktioniert im Allgemeinen für Sammlungen. Allerdings geht die Spaltenherkunft gelegentlich verloren, wenn die Daten Sammlungen und Variablen durchlaufen. Und so kann Power Apps der Überblick über die Spalte verloren gehen, die abgerufen werden soll. Um dieses Problem zu beheben, können Sie Power Apps mithilfe der Funktion ShowColumns
zwingen, dass es sich die Spalte „merkt“. Zum Beispiel:
ClearCollect(
MyColTable,
ShowColumns(Filter(BankAccounts, AcountNo = 32),
"Col1",
"Col2",
"Col3")
);
Dabei sind Col1
, Col2
und Col3
Spalten, von denen Sie erwarten, dass sie aus der Datenquelle abgerufen werden (z. B. die Datenquelle Account
).
Alternativ können Sie Ihrem Formular ein ausgeblendetes Steuerelement hinzufügen, das auf die Spalte verweist. Dies zwingt Power Apps dazu, sich die Spalte zu „merken“.
Schnelle Berechnungen
Schnelle (oder effiziente) Berechnungen sind ein eigenständiges Leistungsziel. Weitere Informationen finden Sie unter Schnelle (effiziente) Berechnungen. Es gibt jedoch einige gängige Anti-Muster, die sich auch auf das Laden von Apps auswirken können, weshalb wir sie hier besprechen. Nachfolgend finden Sie eine Liste von Optimierungen, die Sie berücksichtigen sollten und die sich auf den App-Start oder die Seitennavigation auswirken können.
App.Formulas verwenden
In der Vergangenheit haben viele Autoren eine große Anzahl von Berechnungen in OnStart eingefügt. Wenn Sie einen Ausdruck in OnStart einfügen, wird Power Apps gezwungen, diesen Ausdruck genau beim App-Start und vor allem anderen auszuführen. Mit der Einführung von App.Formulas können Sie jedoch Power Apps entscheiden lassen, wann ein Ausdruck ausgeführt werden soll. Power Apps kann die Formel „Just-in-time“ ausführen, unmittelbar bevor sie benötigt wird. Weitere Informationen finden Sie unter App-Formeln. Verwenden Sie App.Formulas, um Ihre Formel in Teile aufzuteilen, die Power Apps eine effizientere Ausführung ermöglichen.
Concurrent verwenden
Verwenden Sie die Concurrent-Funktion, um das gleichzeitige Ausführen von Formeln zu ermöglichen. Diese Funktion wird häufig zum Befüllen von Sammlungen verwendet, da sie eine parallele Ausführung ermöglicht. Dies kann zwar zu geringfügigen Geschwindigkeitssteigerungen führen, das Hinzufügen vieler Datenquellen kann jedoch zu Zeit- und Drosselungsproblemen führen.
Verbesserte Leistung für ausgeblendete Steuerelemente verwenden
Wenn Power Apps in allen neuen Apps, die seit Dezember 2022 erstellt wurden, standardmäßig aktiviert ist, rendert es keine Steuerelemente, die zunächst nicht angezeigt werden.
Erforderliche Ressourcen minimieren
Minimieren Sie die zum Starten Ihrer App oder Ihres Bildschirms erforderlichen Ressourcen. Dazu gehört die sorgfältige Festlegung oder Partitionierung der Ressourcen, die Ihre App oder Ihr Bildschirm benötigt. Im Folgenden finden Sie verschiedene Ansätze, die Ihnen helfen können.
Verwenden Sie einen Startbildschirm mit geringer Abhängigkeit und eliminieren Sie nicht genutzte Bildschirme.
Verwenden Sie in Ihrer Anwendung einen Anfangsbildschirm, z. B. eine Begrüßung, mit geringer Abhängigkeit. Erstellen Sie einen Bildschirm, der keinen Katalog, keine Tabelle oder Referenzdaten lädt. Dadurch wird die Wahrnehmung der Benutzenden hinsichtlich Geschwindigkeit gesteuert und Power Fx kann einige Berechnungen wie angemessen auf später verschieben. Wenn Sie ungenutzte Bildschirme haben, entfernen Sie diese.
Bildschirmübergreifende Abhängigkeiten zwischen Bildschirmen gering halten
Seitenübergreifende Verweise erzwingen das Laden zusätzlicher Seiten über Verweise, beispielsweise durch Verweisen auf Steuerelemente auf Seiten und Einfügen in Sammlungen. Einige Verweise sind unter Umständen unvermeidlich. Zentralisieren Sie allgemeine Verweise nach Möglichkeit auf einer einzelnen Seite, sodass nur diese Seite geladen wird.
Eingebettete Medien in Betracht ziehen
Autoren betten manchmal Medien in ihre Apps ein, um ein schnelles Laden zu erreichen. Wenn Sie über eingebettete Medien verfügen, überlegen Sie, ob Sie diese verwenden oder nicht. Falls nicht, löschen Sie sie. Wenn Sie eine PNG-Datei eingebettet haben, überlegen Sie, sie durch eine kleinere SVG-Datei zu ersetzen. Beachten Sie, dass sich die Schriftart für die SVG-Datei auf dem Client-Computer befinden muss, wenn Sie eine SVG-Datei verwenden. Berücksichtigen Sie die Auflösung eingebetteter Medien. Ist sie für das Gerät, auf dem sie verwendet werden soll, zu hoch?
App.StartScreen nicht vergessen
Wenn Sie App.StartScreen verwenden, stellen Sie sicher, dass der erste Bildschirm ein leerer Bildschirm ist. Aufgrund der aktuellen Verpackung der App ist der erste logische Bildschirm immer mit der App-Init-Logik gebündelt und wird initialisiert, unabhängig davon, ob wir jemals dorthin navigieren.
Aufteilung der App erwägen
Wenn Ihre App groß ist, sollten Sie erwägen, sie in kleinere Apps aufzuteilen. Wenn die Funktionalität in verschiedenen Teilen Ihrer App ausreichend getrennt ist, könnte dieser Ansatz funktionieren. In diesem Szenario erstellen Sie eine tatsächliche separate App, die Sie mit Parametern starten, die den Kontext der ersten oder übergeordneten App enthalten.
Vorschläge
Um das Ziel eines schnellen App- und Seitenstarts zu erreichen, berücksichtigen Sie die folgenden Fragen und Vorschläge:
- Laden Sie viele Daten auf einem ersten Bildschirm? Können Sie einen anderen ersten Bildschirm verwenden?
- Führen Sie zu Beginn des App-Ladevorgangs viele Befehle oder Power Fx-Ausdrücke aus? Können Sie diese Befehle und Ausdrücke auf einen späteren Zeitpunkt in der Anwendung verschieben? Rufen Sie nur die Daten ab, die Sie tatsächlich zum Starten der App benötigen? 1 Können Sie Ausdrücke in App.OnStart mit App.Formulas in benannte Formeln konvertieren? Dadurch kann Power Fx entscheiden, wann die Formel tatsächlich ausgeführt werden soll, anstatt sie bei Lade- oder Navigationsereignissen zu erzwingen.
- Können Sie einen separaten Power Automate-Flow zum Erstellen einer temporären Tabelle in einem lokalen Datenspeicher, wie Dataverse, verwenden, das Daten aus verschiedenen Quellen kombiniert? Können Sie dann in Ihrer Power App auf diese Daten zugreifen?
- Können Sie für den Start von Geschäftsprozessen vom Server ausgelöste Aktionen verwenden, anstatt einen Power Automate-Flow aufzurufen?
- Können Sie auf dem Server eine Ansicht erstellen, die die Daten für Sie zusammenführt?
- Wenn Sie Offlinedaten in Ihrer App verwenden möchten, können Sie das Power Apps Offlinefeature verwenden, das mit Dataverse funktioniert? Wenn sich Ihre Daten nicht in Dataverse befinden, können Sie sie dorthin verschieben?