Tipy a osvědčené postupy ke zlepšení výkonu aplikací plátna
V předchozích článcích jste se dozvěděli o fázích provádění a toku datových volání, běžných příčinách pomalého výkonu a běžných problémech s výkonem a jejich řešení v aplikacích plátna. Můžete také těžit z tipů a osvědčených postupů v tomto článku pro zvýšení výkonu aplikací, které vytvoříte.
Omezte datová připojení
Nepřidávejte více než 30 připojení v jedné aplikaci. Aplikace vyzvou nové uživatele k přihlášení ke každému konektoru, takže každý další konektor navýší čas, který aplikace potřebuje ke spuštění. Při spuštění aplikace vyžaduje každý konektor prostředky procesoru, paměť a šířku pásma sítě, pokud aplikace požaduje data z tohoto zdroje.
Výkon své aplikace můžete při jejím běhu rychle měřit zapnutím vývojářských nástrojů v Microsoft Edge nebo Google Chromu. Pokud vaše aplikace často požaduje data z více než 30 připojení, je pravděpodobné, že návrat dat bude trvat déle než 15 sekund. Do tohoto limitu se započítává každé přidané připojení samostatně bez ohledu na typ připojeného zdroje dat — například tabulky Microsoft Dataverse nebo SQL Serveru nebo seznamy vytvořené v aplikaci Seznamy Microsoft.
Omezte počet ovládacích prvků
Nepřidávejte více než 500 ovládacích prvků v jedné aplikaci. Power Apps generuje objektový model dokumentu HTML k vykreslení každého ovládacího prvku. K vygenerování dalších přidaných ovládacích prvků potřebuje Power Apps více času.
V některých případech lze dosáhnout stejného výsledku a aplikaci spustit rychleji, pokud namísto jednotlivých ovládacích prvků použijete galerii. Kromě toho budete možná chtít omezit počet typů ovládacích prvků na téže obrazovce. Některé ovládací prvky (například Prohlížeč PDF, Datová tabulka a Kombinované pole) vyžadují dlouhé prováděcí skripty a trvá jim déle, než se vykreslí.
Optimalizace vlastnosti OnStart
Pro ukládání dat do místní mezipaměti použijte funkci ClearCollect, pokud se během relace uživatele nemění. Použijte také funci Concurrent pro současné načítání zdrojů dat; to může zkrátit dobu, kterou aplikace potřebuje k načtení dat, na polovinu. Více informací: Funkce Concurrent v Power Apps
Bez použití funkce Concurrent následující vzorec načítá všechny čtyři tabulky jednu po druhé:
ClearCollect( Product, '[SalesLT].[Product]' );
ClearCollect( Customer, '[SalesLT].[Customer]' );
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
Toto chování můžete potvrdit v Nástrojích pro vývojáře pro váš prohlížeč, jak je znázorněno na následujícím obrázku.
Stejný vzorec můžete přiložit do funkce Concurrent, čímž se zkrátí celková doba potřebná k provedení operace:
Concurrent(
ClearCollect( Product, '[SalesLT].[Product]' ),
ClearCollect( Customer, '[SalesLT].[Customer]' ),
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ))
S touto změnou aplikace načte tabulky paralelně, jak je znázorněno na následujícím obrázku.
Poznámka
Další informace o problémech s výkonem a řešeních souvisejících s vlastností OnStart najdete v článku Událost OnStart vyžaduje vyladění.
Tip
Doporučujeme použít vlastnost App.StartScreen, protože zjednodušuje spouštění aplikace a zvyšuje výkon aplikace.
Ukládejte data vyhledávání do mezipaměti
Použijte funkci Set pro místní ukládání dat z vyhledávacích tabulek do mezipaměti, čímž se zabrání opakovanému načítání dat ze zdroje. Tento postup optimalizuje výkon, pokud se data během relace nebudou měnit. V následujícím příkladu se data ze zdroje načítají jen jednou a pak se na ně odkazuje místně, dokud uživatel aplikaci nezavře.
Set(CustomerOrder, Lookup(Order, id = “123-45-6789”));
Set(CustomerName, CustomerOrder.Name);
Set(CustomerAddress, CustomerOrder.Address);
Set(CustomerEmail, CustomerOrder.Email);
Set(CustomerPhone, CustomerOrder.Phone);
Tato metoda je užitečnější pro data, jako jsou kontaktní informace, výchozí hodnoty nebo informace o uživateli, které se často nemění. Tuto metodu můžete také běžně používat spolu s funkcemi Defaults a User.
Vyhněte se závislosti ovládacích prvků mezi obrazovkami
Pro zlepšení výkonu se obrazovky aplikace načítají do paměti pouze podle potřeby. Tuto optimalizaci lze omezit, pokud je například načtena obrazovka 1 a jeden z jejích vzorců používá vlastnost ovládacího prvku z obrazovky 2. Před zobrazením obrazovky 1 musí být nyní načtena obrazovka 2, aby se splnila závislost. Představte si, že obrazovka 2 má závislost na obrazovce 3, která má jinou závislost na obrazovce 4 atd. Tento řetězec závislosti může způsobit načtení mnoha obrazovek.
Z tohoto důvodu se vyhněte závislostem vzorců mezi obrazovkami. V některých případech můžete ke sdílení informací mezi obrazovkami použít globální proměnnou nebo kolekci.
Existuje výjimka: V předchozím příkladu si představte, že jediným způsobem, jak zobrazit obrazovku 1, je navigace z obrazovky 2. Poté bude obrazovka 2 již načtena do paměti, když se má načíst obrazovka 1. K naplnění závislosti na obrazovce 2 není potřeba žádná další práce, a proto neexistuje žádný dopad na výkon.
Používejte delegování
Pokud je to možné, použijte funkce, které delegují (přenesou) zpracování dat na zdroj dat namísto toho, aby se data načítala do místního zařízení ke zpracování. Pokud aplikace musí data zpracovat místně, operace potřebuje ke zpracování mnohem větší výkon, paměť a šířku pásma sítě, zejména pokud je sada dat velká.
Tip
Další informace o delegovatelných funkcích podporovaných konkrétními konektory najdete v části dokumentace ke konektorům.
Jako příklad delegovatelných funkcí zvažte sloupec ID definovaný jako datový typ Číslo v seznamu vytvořeném pomocí aplikace Seznamy Microsoft. Vzorce v následujícím příkladu vrátí očekávané výsledky. První vzorec je však delegovatelný, zatímco druhý nelze delegovat.
Vzorec | Delegovatelný? |
---|---|
Filter ('List data source', ID = 123 ) |
Ano |
Filter(`List data source', ID ="123") |
Ne |
Protože předpokládáme, že sloupec ID v SharePoint je definován datovým typem Číslo, hodnota na pravé straně by měla být číselná proměnná místo proměnné řetězce. V opačném případě může takový nesoulad spustit vzorec jako nedelegovatelný.
Použití nedelegovatelných funkcí a omezení nevhodných datových řádků pro nedelegovatelné dotazy může mít nepříznivý vliv na výkon aplikace. Další informace: Informace o delegování v aplikaci plátna
Používejte zpožděné načtení
Pokud má vaše aplikace více než 10 obrazovek, žádná pravidla a mnoho ovládacích prvků, které jsou na více obrazovkách a které jsou vázány přímo ke zdroji dat, zapněte si funkci Preview pro opožděné načítání. Pokud vytvoříte takový typ aplikace a nepovolíte tuto funkci, výkon aplikace může být horší, protože ovládací prvky na všech obrazovkách musí být vyplněny, dokonce i na obrazovkách, které nejsou otevřeny. Navíc se musí všechny obrazovky aplikace aktualizovat při každé změně zdroje dat, například když uživatel přidá záznam.
Práce s rozsáhlými sadami dat
Používejte zdroje dat a vzorce, které lze delegovat, aby vaše aplikace měla dobrý výkon a uživatelé měli přístup ke všem informacím, které potřebují, a nepřekračujte limit počtu řádků dat 2000 pro nedelegovatelné dotazy. Pro sloupce záznamu dat, ve kterých mohou uživatelé vyhledávat, filtrovat nebo třídit data, použijte indexy sloupců, jak je popsáno ve zdrojích dat, například SQL Server nebo SharePoint.
Poznámka
Další informace, jak velké datové sady mohou způsobit běžné problémy s výkonem na různých platformách, najdete v části Velké datové sady se načítají pomalu na různých platformách.
Aplikace pravidelně znovu publikujte
Tvůrcům se doporučuje, aby své aplikace pravidelně publikovali. Protože je platforma Power Apps průběžně optimalizována a nasazována, vaše aplikace se regeneruje v rámci nejnovějších optimalizací platformy, když ji znovu publikujete.
Vyhněte se opakování stejného vzorce na více místech
Pokud stejný vzorec spouští více vlastností (zejména pokud je složitý), zvažte jeho nastavení jednou a potom odkazování na výstup první vlastnosti v následujících. Například nenastavujte vlastnost DisplayMode ovládacích prvků A, B, C, D a E na stejný komplexní vzorec. Místo toho nastavte vlastnost A DisplayMode na komplexní vzorec, nastavte vlastnost B DisplayMode na výsledek vlastnosti A DisplayMode atd. pro C, D a E.
Povolte DelayOutput na všech ovládacích prvcích Textové zadání
Pokud máte více vzorců nebo pravidel, která odkazují na hodnotu ovládacího prvku Textové zadání, nastavte vlastnost DelayedOutput tohoto ovládacího prvku true. Vlastnost Text tohoto ovládacího prvku bude aktualizována až po ukončení stisku kláves zadaných v rychlém sledu. Vzorce nebo pravidla se nespustí tolikrát a zlepší se výkon aplikace.
Nepoužívejte Form.Updates v pravidlech a vzorcích
Pokud odkazujete na hodnotu vstupu uživatele v pravidle nebo vzorci pomocí proměnné Form.Updates
, ta iteruje všechny datové karty formuláře a pokaždé vytvoří záznam. Chcete-li zvýšit efektivitu aplikace, odkazujte na hodnotu přímo z datové karty nebo z hodnoty ovládacího prvku.
Ke zlepšení výkonu v Galerii použijte DelayItemLoading a Loading spinner
V závislosti na konfiguraci může Galerii trvat delší dobu vykreslit viditelné řádky. Existuje několik způsobů, jak zlepšit výkon.
- Zjednodušení šablony Zvažte například snížení počtu ovládacích prvků, odkazů na vyhledávání.
- Galerie s komplexními šablonami mohou mít užitek z nastavení DelayItemLoading na true a LoadingSpinner na LoadingSpinner.Controls. Tato změna zlepší vnímanou zkušenost, když je doba vykreslení delší. DelayItemLoading také odloží vykreslení šablon, což umožní rychlejší vykreslení zbytku obrazovky, protože obrazovka i galerie si nekonkurují ve zdrojích.
Zapnutí předběžného načtení aplikace pro lepší výkon
Chcete-li zvýšit výkon, můžete předběžně načíst svou aplikaci.
Přihlaste se k Power Apps a poté v nabídce vyberte Aplikace.
Vyberte Další akce (...) pro aplikaci, kterou chcete sdílet, a poté vyberte Nastavení.
Na panelu Nastavení přepněte Předběžně načíst aplikaci pro lepší výkon na Ano. Aplikace se poté předběžně načte.
Aby se změny pro aplikace integrované do Teams projevily, odeberte aplikaci z Teams a znovu ji přidejte.
Poznámka
Díky tomu jsou kompilované prostředky aplikace přístupné prostřednictvím neověřených koncových bodů, aby je bylo možné načíst před ověřením. Uživatelé však budou moci vaši aplikaci používat pro přístup k datům prostřednictvím konektorů až po dokončení ověření a autorizace. Toto chování zajišťuje, že data, která aplikace načte ze zdrojů dat, nebudou dostupná neověřeným uživatelům. Prostředky kompilované aplikace zahrnují kolekci souborů JavaScript obsahujících text vytvořený v ovládacích prvcích aplikace (například ovládacích prvcích PCF), mediální prostředky (například obrázky), název aplikace a adresu URL prostředí, ve kterém se aplikace nachází.
Obecně by aplikace měly načítat média a informace ze zdrojů dat prostřednictvím připojení. Pokud je nutné do aplikace přidat média a informace, které jsou citlivé a neměly by být načteny pomocí připojení, toto nastavení můžete deaktivovat. Upozorňujeme, že deaktivace tohoto nastavení způsobí, že uživatelé budou na přístup k aplikaci čekat o něco déle.
Data aplikací uložená ve vašem zařízení
Aby uživatelé mohli rychleji načíst podrobnosti o aplikaci při spuštění aplikace, budou určitá data lokálně uložena na zařízeních v mezipaměti prohlížeče. Informace, které budou uloženy, zahrnují podrobnosti o aplikaci, prostředí a připojení. Tato data zůstanou uložena v prohlížeči na základě limitů úložiště jednotlivých prohlížečů. Chcete-li vymazat uložená, viz pokyny pro každý prohlížeč.
Další kroky
Posouzení standardů pro kódování pro maximalizaci výkonu aplikací a snadnější údržbu aplikací.
Viz také
Principy fází provádění aplikací plátna a tok volání dat
Běžné problémy a řešení týkající se výkonnosti aplikací plátna
Běžné zdroje pomalého výkonu pro aplikaci plátna
Běžné problémy a řešení v Power Apps
Řešení problémů se spouštěním v Power Apps
Poznámka
Můžete nám sdělit, jaké máte jazykové preference pro dokumentaci? Zúčastněte se krátkého průzkumu. (upozorňujeme, že tento průzkum je v angličtině)
Průzkum bude trvat asi sedm minut. Nejsou shromažďovány žádné osobní údaje (prohlášení o zásadách ochrany osobních údajů).