Sovelluksen ja sivun latauksen optimointi parhaan suorituskyvyn saavuttamiseksi
Eräs käyttäjän sovellusta koskevaa käsitystä muovaava tekijä on se, miten nopeasti sovellus avautuu ja tulee toiminnalliseksi. Siksi tämän tavoitteen priorisointi on tärkeää tehokkaan sovelluksen luomisessa. Sovelluksen optimaalisen suorituskyvyn saavuttamiseksi on kiinnitettävä huomiota kolmeen seuraavaan pääalueeseen:
- Tietojen nopea lataaminen
- Tehokkaat laskutoimitukset
- Tarvittavien resurssien minimoiminen
Jokaisella alueella on useita yleisiä toimimattomia malleja.
Tietojen nopea lataaminen
Noudata näitä ohjeita saadaksesi käyttöön tiedot nopeasti lataavat sovellukset.
Vältä täyttämästä kokoelmaa suoraan suurilla tietomäärillä
Joskus tekijät käyttävät ClearCollect()-toimintoa tietojen kopioimiseen palvelimelta sovelluksen kokoelmaan. Tämä käytäntö on ratkaisu lähteen delegointirajoituksiin, koska kokoelmia suunnitellaan käytettäviksi sovelluksissa muita tarkoituksia varten. Kun käytössä on ClearCollect(), sovelluksen nopeus voi mahdollisesti kasvaa, kun kokoelmaa käytetään myöhemmin. Sen toteutuksessa tulee kuitenkin noudattaa varovaisuutta. Jos ClearCollectia käytetään näin, sovelluksen latausajat voivat pidentyä tai sivujen välillä siirtyminen hidastua. ClearCollect() on suoritettava loppuun, ennen kuin tiedot näkyvät valikoimassa tai taulukossa. Tämä vaihe voi kestää kauan, jos tietoja on paljon tai jos käytät tätä lähestymistapaa liian monessa tietolähteessä. Kokoelmat sopivat parhaiten tilanteisiin, joissa tietoja on vähän ja kokoelmasta tehdään useita laskutoimituksia. Kokoelmia voi käyttää esimerkiksi verkkotilauskorissa. Asiakas voi päivittää tuotteita ja poistaa niitä useita kertoja ennen tilauksen tekemistä. Lisäksi voit täydentää kokoelmaa uusilla tietonimikkeillä, kuten mahdollisilla alennuksilla ja tehostuksilla. Vain luku -tilassa olevia tietoja voi käyttää natiivisti ilman, että se tuodaan kokoelmaan.
Power Automaten kutsumisen välttäminen kokoelman täyttämisessä
Tämä ongelma on pieni variaatio edellisestä osasta. Joskus tekijät käyttävät myös Power Automatea kokoelman täyttämisessä Power Appsissa. Power Automaten esiintymän luominen kestää noin 0,6 sekuntia. Power Automate on käynnistettävä itsenäisesti joka kerta, kun sitä kutsutaan. Sen on varattava muisti, sijoitettava oikeat komponentit ja oltava valmis käytettäväksi. Yllä olevan ohjeen mukaisesti yksi kutsu tai kaksi kutsua Power Automatessa ei ehkä sovelluksesta riippuen ole ongelma. Mutta usein huonoimmin toimivat sovellukset käyttävät tätä lähestymistapaa liikaa. Suorituskustannukset voivat nousta nopeasti ja pilata sovelluksen suorituskyvyn.
Vältä SaveData()- ja LoadData()-toiminnon käyttämistä täysin offline-skenaariona
Jotkin tekijät käyttävät ClearCollect()-toimintoa ja sitten SaveData()-toimintoa tallentaessaan tietoja yleistä offline-käyttöä varten. Voit tallentaa kokoelman laitteelle SaveData()-toiminnon avulla ja ladata sen offline tilassa LoadData()-toiminnon avulla. Tätä menettelytapaa ei kuitenkaan suositella tapauksissa, joissa tietoja on paljon tai jos tiedot ovat monimutkaisia. Tällöin sovellus toimii normaalia hitaammin, koska sen on odotettava ClearCollect()-toiminnon valmistumista ennen tietojen näyttämistä. Käytä vain SaveData()- ja LoadData()-toimintoja pienille ja yksinkertaisille tietoskenaarioille, kuten määrityksille ja lyhyille luetteloille. Tätä parempi tapa suurten offline-tilaisten tietomäärien käsittelyyn on käyttää Power Appsin offline-ominaisuutta, joka toimii Dataversessa. Tämä ominaisuus voi käsitellä suuria ja monimutkaisia tietomääriä tehokkaasti.
Eksplisiittisen sarakkeen käyttö
Eksplisiittinen sarakkeiden valinta on käytössä oletusarvoisesti. Jotkut tekijät kuitenkin poistavat tämän ominaisuuden käytöstä. Jos Eksplisiittinen sarakkeiden valinta (ECS) -ominaisuus on otettu käyttöön, sarakkeita ei aina noudeta tietolähteestä, jos tiedot noudetaan ensin kokoelmaan. Koska joissakin taulukoissa on useita sarakkeita, ECS-ominaisuus laskee automaattisesti sarakkeet, jotka on noudettava niiden käyttöasteen perusteella ohjausobjekteissa (esimerkiksi valikoimissa ja lomakkeissa). Koska joissakin taulukoissa voi olla useita sarakkeita, latauksen koon pienentäminen voi nopeuttaa suoritusta. Joissakin taulukoissa voi olla yli sata saraketta. Jos sovellus tarvitsee vain 10 saraketta ja tuot taulukon kaikki 100 saraketta, tuotavia tietoja on kymmenen kertaa enemmän kuin tarvitaan.
Useimmat ongelmat syntyvät tuotaessa tietoja kokoelmiin. Jos sarakkeeseen viitataan eksplisiittisesti ohjausobjektissa, ECS toimii hyvin. Ja ECS toimii yleensä kokoelmissa. Sarakkeiden historiatiedot kuitenkin joskus menetetään tietojen siirtyessä kokoelmien ja muuttujien välillä. Näin Power Apps voi menettää noudettavan sarakkeen seurannan. Voit ratkaista tämän ongelman pakottamalla Power Appsin "muistamaan" sarakkeen ShowColumns
-funktion avulla. Esimerkki:
ClearCollect(
MyColTable,
ShowColumns(Filter(BankAccounts, AcountNo = 32),
"Col1",
"Col2",
"Col3")
);
Col1
, Col2
ja Col3
ovat sarakkeita, jotka odotetaan noudettaviksi tietolähteestä (esimerkiksi tietolähteestä Account
).
Vaihtoehtoisesti voit lisätä lomakkeeseen piilotetun ohjausobjektin, joka viittaa sarakkeeseen. Tämä pakottaa Power Appsin "muistamaan" sarakkeen.
Nopeat laskutoimitukset
Nopeat (tai tehokkaat) laskutoimitukset ovat suorituskyvyn tavoite itsessään. Lisätietoja on kohdassa Nopeat (tehokkaat) laskutoimitukset. Jotkin yleiset toimimattomat mallit voivat kuitenkin myös vaikuttaa sovelluksen lataamiseen. Niistä kerrotaan alla. Alla on luettelo optimoinneista, jotka saattavat vaikuttaa sovellusten käynnistymiseen ja sivuilla siirtymiseen.
App.Formulas-funktion käyttö
Aiemmin monet tekijät ovat siirtäneet useita laskutoimituksia OnStartiin. Kun sijoitat lausekkeen OnStartiin, se pakottaa Power Appsin suorittamaan lausekkeen juuri sovelluksen käynnistyessä, ennen muita toimintoja. App.Formulas-funktion esittelyssä voit kuitenkin antaa Power Appsin päättää, milloin lauseke suoritetaan. Power Apps voi suorittaa kaavan juuri ajoissa silloin, kun sitä tarvitaan. Lisätietoja on kohdassa Sovellusten kaavat. Käytä App.Formulas-funktiota kaavan jakamisessa osiksi, jotka Power Apps voi järjestää tehokkaasti suoritusta varten.
Concurrent-funktion käyttö
Käytä Concurrent-funktiota, jos haluat sallia kaavojen samanaikaisen suorituksen. Tätä funktiota käytetään usein kokoelmien täyttämisessä, koska se sallii rinnakkaisen suorituksen. Tämä voi kasvattaa nopeutta hetkittäin, joten useat tietolähteet voivat aiheuttaa ajoitus- ja rajoitusongelmia.
Parannetun suorituskyvyn käyttö piilotetuissa ohjausobjekteissa
Ominaisuus on ollut oletusarvoisesti käytössä kaikissa uusissa vuoden 2022 jälkeen luoduissa sovelluksissa. Power Apps ei hahmonna ohjausobjekteja, jotka eivät ole alun perin näkyvissä.
Tarvittavien resurssien minimoiminen
Minimoi sovelluksen tai näytön käynnistämisessä tarvittavat resurssit. Tämä toiminto sisältää sovelluksen tai näytön tarvitsemien resurssien huolellisen rajauksen ja osioinnin. Alla esitellään useita menetelmiä, jotka voivat auttaa.
Käytä alhaisen riippuvuuden aloitusnäyttöä ja poista käyttämättömät näytöt.
Käytä vain vähän riippuvaista ensimmäistä näyttöä, kuten sovelluksen tervetulonäyttö. Luo näyttö, joka ei lataa valikoimaa, taulukkoa tai viitetietoja. Tämä ohjaa käyttäjän käsitystä nopeudesta ja antaa Power Fx:n viivyttää joitakin laskutoimituksia myöhemmäksi. Poista mahdolliset käyttämättömät näytöt.
Pidä näyttöjen väliset riippuvuudet vähäisinä
Sivujen väliset viittaukset pakottavat lisäsivujen lataamisen viitteiden kautta. Esimerkki tästä on ohjausobjekteihin viittaaminen sivuilla ja asettaminen kokoelmiin. Jotkin viittaukset saattavat olla väistämättömiä. Keskitä yleiset viittaukset yhdelle sivulle, jos mahdollista, jotta vain yksi sivu latautuu.
Upotetun median käyttäminen
Tekijät upottavat joskus mediaa sovelluksiinsa nopean latauksen varmistamiseksi. Jos käytettävissä on upotettavaa mediaa, voit harkita sen käyttämistä. Jos sitä ei käytetä, poista se. Jos olet upottanut .png-tiedoston, harkitse sen korvaamista pienemmällä .svg-tiedostolla. Huomaa, että jos käytät .svg-tiedostoa, .svg-fontin on sijaittava asiakaskoneessa. Ota huomioon upotetun median resoluutio. Onko se liian suuri käytettävälle laitteelle?
Muista App.StartScreen
Jos käytössä on App.StartScreen, varmista, että ensimmäinen näyttö on tyhjä. Sovelluksen nykyisen pakkauksen vuoksi ensimmäinen looginen näyttö on aina niputettu sovelluksen aloituslogiikkaan huolimatta siitä, siirrytäänkö sinne vai ei.
Sovelluksen jakaminen
Jos sovellus on suuri, harkitse sen osiointia pienemmiksi sovelluksiksi. Jos toiminnot ovat riittävän erillisiä sovelluksen eri osissa, tämä menettelytapa saattaa toimia. Tässä skenaariossa luot todellisen erillisen sovelluksen, joka käynnistetään ensimmäisen sovelluksen tai pääsovelluksen kontekstia sisältävillä parametreilla.
Ehdotukset
Jos haluat saavuttaa nopean sovelluksen ja sivun käynnistyksen, ota huomioon seuraavat kysymykset ja ehdotukset:
- Ladataanko ensimmäisessä näytössä paljon tietoja? Onko mahdollista käyttää erilaista ensimmäistä näyttöä?
- Suoritetaanko useita komentoja tai Power Fx -lausekkeita sovelluksen latauksen alussa? Voiko nämä komennot ja lausekkeet siirtää sovelluksessa myöhempään kohtaan? Ovatko käytettävissä vain tiedot, joita todella tarvitaan sovelluksen käynnistyksen yhteydessä? 1 Voiko lausekkeet muuttaa App.OnStart-funktiossa nimetyiksi kaavoiksi App.Formulas-funktion avulla? Näin Power Fx voi päättää kaavan suoritusajankohdan sen sijaan, että se pakotettaisiin suoritukseen latauksen tai siirtymistapahtuman yhteydessä.
- Voiko erillisen Power Automate -työnkulun avulla luoda väliaikaisen taulukon paikallisessa tietosäilössä, kuten Dataversessa, joka yhdistää tiedot eri lähteistä? Voiko tietoja tämän jälkeen käyttää Power Appissa?
- Voiko liiketoimintaprosessien käynnistyksissä käyttää palvelimen käynnistämiä toimintoja sen sijaan, että kutsutaan Power Automate -työnkulkua?
- Voiko palvelimessa luoda näkymän, joka yhdistää tiedot?
- Jos sovelluksessa halutaan käyttää offline-tietoja, onko mahdollista käyttää Power Appsin offline-ominaisuutta, joka toimii yhdessä Dataversen kanssa? Jos tiedot eivät ole Dataversessa, voiko tiedot siirtää sinne?