Die Leistung bei Datenquellen verbessern

Abgeschlossen

In der vorherigen Lerneinheit haben Sie erfahren, dass Datenquellen oft der Hauptgrund für Leistungsbeeinträchtigungen Ihrer App sind. In dieser Lerneinheit erfahren Sie mehr über einige der üblichen Verfahren, mit denen Sie diese Leistungsprobleme reduzieren können.

Sammlungen zum Zwischenspeichern von Daten verwenden

Häufig werden Sie in Ihrer App wiederholt dieselben Daten abfragen, wie beim Abrufen der Listen der Abteilungen für Ihre Dropdownmenüs. In diesen Fällen können Sie die Daten einmalig abfragen und dann in der gesamten App wiederverwenden. Dadurch werden wiederholte Aufrufe der Datenquelle über das Netzwerk reduziert. Nachfolgend ist ein Beispiel für diesen Prozess aufgeführt.

In Ihrer App verfügen Sie über mehrere Bildschirme, auf denen Sie ein Dropdownmenü zur Auswahl der Abteilung zur Verfügung stellen. Die Liste der Abteilungen wird in Microsoft Dataverse in einer Tabelle namens DepartmentList gespeichert. Für jede Instanz des Menüs verwenden Sie die folgende Formel.

Filter(DepartmentList, Status = "Active")

Dies funktioniert und führt zu einer entsprechenden Leistung.

Wenn Sie die App beenden, stellen Sie fest, dass Sie die Tabelle DepartmentList mehrmals abfragen, obwohl es sich um statische Informationen handelt. Sie können Ihre App ändern, um eine Sammlung mit der OnStart-Eigenschaft der App zu erstellen, die die Informationen mit der folgenden Formel speichert.

Collect(collectDepartmentList, Filter(DepartmentList, Status = "Active"))

Nachdem Sie diese Informationen gespeichert haben, können Sie die Items-Eigenschaft der Dropdownsteuerelemente so ändern, dass sie collectDepartmentList anstelle von „Filter(DepartmentList, Status = "Active")“ lautet. Diese kleinen Änderungen führen zusammen zur Steigerung der Leistung Ihrer App. Wenn Sie mit dem Verfahren besser vertraut sind, können Sie Ihre App von Anfang an so gestalten, dass die Anzahl der Formeln, die Sie schreiben und pflegen müssen, reduziert wird.

Auf die Delegierung achten

Dabei ist zu beachten, dass die Funktion „Collect“ nicht delegierbar ist. Standardmäßig bedeutet dies, dass nur die ersten 500 Elemente aus Ihrer Datenquelle zurückgegeben und in der Sammlung gespeichert werden. Achten Sie darauf, diese Einschränkung zu berücksichtigen, wenn Sie die Verwendung von Sammlungen in Ihrer App implementieren.

Delegierung betrifft auch die Leistung

Bei Erhalt der Informationen über die Delegierung haben Sie sich darauf konzentriert, die richtige Anzahl von Zeilen für Ihre Datenquelle zurückzugeben. Es ist auch wichtig, sich daran zu erinnern, dass die Delegierung, insbesondere bei mobilen Apps, die Leistung beeinträchtigen kann.

Wenn eine Formel an die Datenquelle delegiert, wird die gesamte Verarbeitung von der Datenquelle übernommen. Nur die übereinstimmenden Zeilen werden über das Netzwerk zur Anzeige an die App zurückgegeben. Wenn eine Funktion nicht delegierbar ist, dann ist es üblich, den Grenzwert für die Delegierung auf 2.000 Zeilen zu ändern. Das bedeutet, dass die ersten 2.000 Zeilen über das Netzwerk heruntergeladen und dann lokal verarbeitet werden. In Szenarien, in denen Sie von einer langsamen Mobilfunkverbindung oder einem Low-End-Mobilgerät abhängig sind, kann diese Verarbeitung sehr lange dauern und zu einer schlechten Benutzererfahrung führen.

Versuchen Sie, weitestgehend nur delegierbare Funktionen zu verwenden. Berücksichtigen Sie die Auswirkungen auf den Endbenutzer, wenn Ihre Funktion nicht delegierbar ist.

Die Funktion „Concurrent“ zum Laden mehrerer Datenquellen verwenden

Zuvor haben Sie erfahren, wie Sie die Daten in Ihrer App mithilfe von Sammlungen zwischenspeichern können. Wenn Sie diese Funktionalität in Ihrer App implementieren, ist es nicht ungewöhnlich, dass beim Start der App mehrere Sammlungen geladen werden. Ihre OnStart-Eigenschaft könnte wie folgt aussehen.

Collect(collectDepartmentList, Filter(DepartmentList, Status =
"Active")); Collect(collectCompanyList,
CompanyList);Collect(collectRegions, RegionList)

In diesem Beispiel erstellen Sie drei Sammlungen. Diese Sammlungen werden jedoch nacheinander verarbeitet. Wenn also jede einzelne von ihnen drei Sekunden zur Verarbeitung benötigt, dann muss Ihr Benutzer bis zum Start der App neun Sekunden warten.

Mit der Funktion „Concurrent“ können Sie diese Aufrufe gleichzeitig verarbeiten. Sie können Ihren Code wie folgt ändern.

Concurrent(
Collect(collectDepartmentList, Filter(DepartmentList, Status = "Active")),
Collect(collectCompanyList, CompanyList),
Collect(collectRegions, RegionList)
)

Jetzt werden alle drei Formeln gleichzeitig ausgeführt. Dadurch wird die Ladezeit auf drei Sekunden verringert. Die Funktion „Concurrent“ ist eine hervorragende Möglichkeit, um lange Verzögerungen bei asynchronen Aufrufen zu vermeiden.

Vorschau‑ und experimentelle Funktionen

Innerhalb von Power Apps gibt es zusätzliche, erweiterte Features, die Sie in Ihrer App implementieren können. Sie können auf sie zugreifen, indem Sie auf der Menüleiste Datei, App-Einstellungen und dann Erweiterte Einstellungen auswählen. Die Liste der angezeigten Optionen ändert sich ständig, aber oft gibt es eine oder mehrere Funktionen, die sich auf die Leistung beziehen.

Vorschaufunktionen

Vorschaufunktionen sind Funktionen, die ausführlich getestet wurden und kurz vor der Veröffentlichung stehen. Sie werden in Kürze für alle Apps verfügbar sein. Das Testen und Verstehen dieser Funktionen hilft Ihnen, sich darauf vorzubereiten, wenn sie zum Standard werden. Die meisten werden standardmäßig in neuen Apps aktiviert.

Ein Beispiel für eine aktuelle Vorschaufunktion, die zur Leistungssteigerung beiträgt, ist „Verzögertes Laden“. Diese Funktion „beschleunigt die Startzeit Ihrer App durch das Festlegen von On-Demand-Ausrufen von Bildschirmausdrücken“. Dies bedeutet, dass Bildschirme erst verarbeitet werden, wenn der Benutzer auf den Bildschirm zugreift, wodurch die App schneller gestartet und ausgeführt wird.

Experimentelle Funktionen

Experimentelle Funktionen können jederzeit geändert oder aufgehoben werden oder verschwinden. Die Funktionen sind standardmäßig deaktiviert. Gelegentlich finden Sie hier auch leistungsbezogene Funktionen, sodass sich ein Blick darauf lohnt. Beachten Sie jedoch, dass Sie ein Risiko eingehen, wenn Sie sie in Produktions-Apps integrieren, da sie sich entwickeln, vollständig ändern oder verschwinden können.

Gelegentlich wird Ihnen möglicherweise eine experimentelle Funktion angezeigt, die sich auf die App-Leistung bezieht. Sie können es jederzeit aktivieren und testen und dann zurück zu den Einstellungen wechseln, um es zu deaktivieren.

OnStart und OnVisible

„OnStart“ und „OnVisible“ sind Teil Ihres Toolkits zum Erstellen erstklassiger Apps. Sie können jedoch erhebliche Auswirkungen auf die Leistung haben.

  • OnStart – Dies ist eine Eigenschaft auf App-Ebene. Die Formeln in dieser Eigenschaft werden einmalig beim Start der App ausgeführt und dann nie wieder. Alle Formeln müssen verarbeitet werden, bevor die App geöffnet wird. Dies wird häufig verwendet, um Daten zu initialisieren, die in der gesamten App erforderlich sind.

  • OnVisible – Dies ist eine bildschirmbezogene Eigenschaft. Formeln in dieser Eigenschaft werden jedes Mal ausgeführt, wenn ein Benutzer zum Bildschirm navigiert. Der Bildschirm wird gerendert, bevor die Verarbeitung der Formel abgeschlossen ist.

Für die Leistung ist es von entscheidender Bedeutung, wann der Code ausgeführt wird. Einmal beim Start der App oder jedes Mal, wenn ein Bildschirm angezeigt wird. Die Sammlung für Abteilungen weiter oben in diesem Modul ist ein gutes Beispiel. Dieser Code wird in der OnStart-Eigenschaft der App geladen. Das bedeutet, dass er einmal geladen wurde und dann immer verfügbar ist. Wenn Sie diesen Code von „OnStart“ nach „OnVisible“ verschoben hätten, würden Sie den Vorteil der Sammlung verlieren. Wenn sich die Formel in der OnVisible-Eigenschaft befindet, wird jedes Mal, wenn der Benutzer zum Bildschirm navigiert, die Datenquelle abgefragt. In diesem Fall würde es genauso gut funktionieren, den Code in der Dropdownliste zu belassen.

Das bedeutet nicht, dass Sie „OnVisible“ nicht verwenden sollten. „OnVisible“ ist besonders für Formeln geeignet, die sich auf den aktuellen Bildschirm beziehen, den Sie ausführen müssen. Zudem ist OnVisible nicht sperrend. Benutzer müssen also nicht auf den Abschluss der Formel warten, um den Bildschirm anzuzeigen, wodurch die Zeit verringert wird, in der ein leerer Bildschirm angezeigt wird.

In den meisten Apps verwenden Sie eine Mischung aus „OnStart“ und „OnVisible“, um das optimale Ergebnis zu erzielen.

Zusammenfassung

Wie Sie sehen können, gibt es viele Möglichkeiten, wie Sie Ihre App erstellen und mit Datenquellen interagieren können. Die Liste in dieser Lerneinheit ist bei weitem nicht vollständig. Diese Anleitung soll zu einer besseren Leistung führen, aber Ihre Ergebnisse können davon abweichen. Wenn Sie beginnen, diese Verfahren auf Ihre Apps anzuwenden, werden Sie erfahren, was für Sie und Ihre Umgebung am besten funktioniert.

In der nächsten Lerneinheit erfahren Sie mehr über Verfahren zum Testen und zur Problembehandlung.