Optimumkan beban apl atau halaman untuk prestasi puncak

Salah satu faktor utama yang membentuk persepsi pengguna terhadap apl ialah seberapa cepat ia dibuka dan berfungsi. Oleh itu, mengutamakan matlamat ini adalah penting dalam membina aplikasi yang berprestasi. Untuk mencapai prestasi apl yang optimum, terdapat tiga bidang utama yang memerlukan perhatian:

  1. Muatkan data dengan pantas
  2. Pengiraan yang cekap
  3. Meminimumkan sumber yang diperlukan

Setiap kawasan ini mempunyai beberapa anti-corak biasa.

Muatkan data dengan pantas

Ikut garis panduan ini untuk mencapai apl pemuatan data yang pantas.

Elakkan mengisi koleksi secara langsung dengan sejumlah besar data

Kadangkala pengarang menggunakan ClearCollect() untuk menyalin data daripada pelayan ke koleksi dalam apl mereka. Amalan ini ialah penyelesaian untuk had delegasi dalam sumber atau kerana mereka merancang untuk menggunakan koleksi dalam apl untuk tujuan lain. Menggunakan ClearCollect() berpotensi meningkatkan kelajuan apl apabila koleksi digunakan kemudian. Walau bagaimanapun, adalah penting untuk berhati-hati semasa melaksanakannya. Menggunakan ClearCollect dengan cara ini boleh menyebabkan masa muat apl yang lebih perlahan atau apabila menavigasi antara halaman. ClearCollect() mesti selesai sebelum anda boleh melihat data dalam galeri atau jadual. Langkah ini boleh mengambil masa yang lama jika terdapat banyak data atau jika anda menggunakan pendekatan ini untuk terlalu banyak sumber data. Koleksi paling baik digunakan untuk situasi di mana data kecil dan anda perlu melakukan banyak pengiraan pada koleksi. Sebagai contoh, penggunaan koleksi yang baik ialah bakul pesanan dalam talian. Pelanggan boleh mengemas kini dan mengalih keluar item beberapa kali sebelum memilih untuk melakukan pesanan. Selain itu, anda boleh menambah koleksi dengan lebih banyak item data seperti potensi diskaun, sorotan, dsb. Data yang 'baca sahaja' harus diakses secara asli - tanpa membawanya ke dalam koleksi.

Pertimbangkan untuk mengelak daripada memanggil Power Automate untuk mengisi koleksi

Isu ini adalah sedikit variasi daripada bahagian sebelumnya. Kadang-kadang pengarang juga menggunakan Power Automate untuk mengisi koleksi mereka dalam Power Apps. Terdapat kira-kira kos prestasi 0.6 saat untuk instantiate Power Automate. Power Automate mesti dilancarkan secara bebas setiap kali ia dipanggil. Ia mesti memperuntukkan memori, ditempatkan dengan komponen yang betul dan bersedia untuk dijalankan. Seperti nasihat di atas, satu atau dua panggilan ke mungkin Power Automate tidak menjadi masalah bergantung pada apl anda. Tetapi, hampir secara universal, apl berprestasi paling teruk menggunakan pendekatan ini secara berlebihan. Kos prestasi boleh bertambah dengan cepat dan merosakkan prestasi apl anda.

Elakkan menggunakan SaveData() dan LoadData() sebagai senario luar talian penuh

Sesetengah pengarang menggunakan ClearCollect() dan kemudian SaveData() untuk menyimpan data untuk kegunaan luar talian tujuan umum. Anda boleh menggunakan SaveData() untuk menyimpan koleksi ke peranti anda dan LoadData() untuk memuatkannya apabila anda berada di luar talian. Walau bagaimanapun, pendekatan ini tidak disyorkan untuk keadaan di mana terdapat sejumlah besar data atau jika data itu kompleks. Ia menjadikan apl anda lebih perlahan kerana ia perlu menunggu ClearCollect() selesai sebelum ia boleh menunjukkan data. Anda hanya perlu menggunakan SaveData() dan LoadData() untuk senario data kecil dan ringkas seperti keutamaan dan senarai pendek. Cara yang lebih baik untuk bekerja dengan sejumlah besar data luar talian ialah menggunakan Power Apps ciri luar talian yang berfungsi dengan Dataverse. Ciri ini boleh mengendalikan data yang lebih besar dan lebih kompleks dengan lebih cekap.

Gunakan pemilihan lajur eksplisit

Pemilihan lajur eksplisit dihidupkan secara lalai. Walau bagaimanapun, sesetengah pengarang mematikan ciri ini. Isunya ialah dengan Pemilihan lajur eksplisit (ECS) dihidupkan, lajur kadangkala tidak diambil daripada sumber data jika data mula-mula diambil ke dalam koleksi. Memandangkan sesetengah jadual mungkin mempunyai banyak lajur, ECS secara automatik mengira lajur yang perlu diambil berdasarkan penggunaannya dalam kawalan (contohnya, galeri dan borang.) Memandangkan sesetengah jadual boleh banyak lajur, mengurangkan saiz muat turun boleh mempercepatkan prestasi. Sesetengah jadual boleh mempunyai seratus lajur atau lebih. Jika apl anda hanya perlu menggunakan 10 lajur dan anda menurunkan semua lajur daripada jadual 100 lajur, anda menurunkan data sepuluh kali ganda daripada yang anda perlukan sebenarnya.

Kebanyakan isu timbul apabila membawa data ke dalam koleksi. Jika lajur dirujuk secara eksplisit dalam kawalan maka ECS berfungsi dengan baik. Dan, ECS secara amnya berfungsi untuk koleksi. Walau bagaimanapun, keturunan lajur kadangkala hilang apabila data bergerak melalui koleksi dan pembolehubah. Dan, dan seterusnya Power Apps mungkin kehilangan jejak lajur yang harus diambil. Untuk menyelesaikan isu ini, anda boleh memaksa Power Apps untuk "mengingat" lajur dengan menggunakan fungsi tersebut ShowColumns . Contohnya:

    ClearCollect(
        MyColTable, 
        ShowColumns(Filter(BankAccounts, AcountNo = 32),
        "Col1", 
        "Col2", 
        "Col3")
    );

Di mana Col1, Col2 dan Col3 ialah lajur yang anda jangkakan untuk diambil daripada sumber data (contohnya, Account sumber data).

Sebagai alternatif, anda boleh menambah kawalan tersembunyi pada borang anda yang merujuk lajur. Ini memaksa Power Apps untuk "mengingat" lajur.

Pengiraan cepat

Pengiraan pantas (atau cekap) ialah matlamat prestasi dengan sendirinya. Untuk maklumat lanjut, lihat Pengiraan pantas (cekap). Walau bagaimanapun, terdapat beberapa anti-corak biasa yang boleh menjejaskan beban apl juga, jadi kami membincangkannya di sini. Di bawah ialah senarai pengoptimuman yang perlu anda pertimbangkan yang mungkin menjejaskan pelancaran apl atau navigasi halaman.

Gunakan App.Formulas

Dari segi sejarah, ramai pengarang telah meletakkan sejumlah besar pengiraan dalam OnStart. Apabila anda meletakkan ungkapan dalam OnStart, ia memaksa Power Apps untuk menjalankan ungkapan itu dengan tepat apabila aplikasi bermula dan sebelum segala-galanya. Walau bagaimanapun, dengan pengenalan App.Formulas, anda boleh memutuskan Power Apps masa untuk menjalankan ungkapan. Power Apps boleh menjalankan formula 'Just-in-time' sebelum ia diperlukan. Untuk mendapatkan maklumat lanjut, lihat Formula aplikasi. Gunakan App.Formulas untuk membahagikan formula anda kepada bahagian yang Power Apps boleh menyusun dengan lebih cekap untuk pelaksanaan.

Gunakan Serentak

Gunakan fungsi Serentak untuk membolehkan formula dilaksanakan pada masa yang sama. Adalah perkara biasa untuk menggunakan fungsi ini untuk mengisi koleksi kerana ia membolehkan pelaksanaan selari. Walaupun ini boleh memberikan beberapa peningkatan kelajuan sederhana, menambah banyak sumber data boleh menyebabkan isu masa dan pendikit.

Gunakan Prestasi dipertingkatkan untuk kawalan tersembunyi

Apabila didayakan secara lalai dalam semua apl baharu yang dicipta sejak Disember 2022, Power Apps tidak memaparkan sebarang kawalan yang pada mulanya tidak kelihatan.

Minimumkan sumber yang diperlukan

Minimumkan sumber yang diperlukan untuk melancarkan apl atau skrin anda. Usaha ini termasuk meninjau atau membahagikan sumber yang diperlukan oleh apl atau skrin anda dengan teliti. Di bawah ialah beberapa pendekatan untuk membantu anda.

Gunakan skrin mula pergantungan rendah dan hapuskan skrin yang tidak digunakan.

Gunakan skrin pertama pergantungan rendah seperti alu-aluan pada aplikasi anda. Buat skrin yang tidak memuatkan galeri atau jadual atau data rujukan. Ini menguruskan persepsi pengguna terhadap kelajuan dan membolehkan Power Fx untuk menangguhkan beberapa pengiraan dengan betul kemudian. Jika anda mempunyai sebarang skrin yang tidak digunakan, alih keluarnya.

Pastikan kebergantungan silang skrin antara skrin rendah

Rujukan merentas halaman memaksa beban halaman tambahan melalui rujukan, contohnya, kawalan rujukan pada halaman dan dimasukkan ke dalam koleksi. Sesetengah rujukan mungkin tidak dapat dielakkan. Pusatkan rujukan biasa kepada satu halaman jika boleh supaya hanya halaman yang dimuatkan.

Pertimbangkan media terbenam

Pengarang kadangkala membenamkan media dalam apl mereka untuk memastikan pemuatan pantas. Jika anda mempunyai media terbenam, pertimbangkan sama ada anda menggunakannya atau tidak. Jika tidak, padamkannya. Jika anda telah membenamkan fail .png, pertimbangkan untuk menggantikan fail .svg yang lebih kecil. Ambil perhatian bahawa jika anda menggunakan .svg, fon untuk .svg mesti berada pada mesin klien. Pertimbangkan resolusi media terbenam. Adakah ia terlalu tinggi untuk peranti yang akan digunakan?

Jangan lupa App.StartScreen

Jika anda menggunakan App.StartScreen, pastikan skrin pertama ialah skrin kosong. Disebabkan pembungkusan semasa apl, skrin logik pertama sentiasa digabungkan dengan logik init apl dan akan dimulakan, tidak kira sama ada kita pernah menavigasi ke sana.

Pertimbangkan untuk membahagikan apl

Jika apl anda besar, pertimbangkan untuk membahagikan apl tersebut kepada apl yang lebih kecil. Jika fungsi cukup berasingan di bahagian apl anda yang berlainan, pendekatan ini mungkin berfungsi. Dalam senario ini, anda mencipta aplikasi berasingan sebenar yang anda lancarkan dengan parameter yang menyertakan konteks daripada aplikasi pertama atau induk.

Cadangan

Untuk mencapai matlamat permulaan aplikasi dan halaman yang pantas, pertimbangkan soalan dan cadangan berikut:

  1. Adakah anda memuatkan banyak data dalam skrin pertama? Bolehkah anda menggunakan skrin pertama yang berbeza?
  2. Adakah anda menjalankan banyak arahan atau Power Fx ungkapan pada permulaan pemuatan apl? Bolehkah anda menangguhkan arahan dan ungkapan ini ke titik kemudian dalam aplikasi? Hanya dapatkan data yang sebenarnya anda perlukan untuk memulakan apl? 1 Bolehkah anda menukar ungkapan dalam App.OnStart kepada formula bernama dengan App.Formulas? Ini membolehkan Power Fx untuk memutuskan bila hendak benar-benar melaksanakan formula dan bukannya memaksanya berlaku pada acara beban atau navigasi.
  3. Bolehkah anda menggunakan aliran berasingan Power Automate untuk mencipta jadual sementara dalam storan data setempat seperti yang Dataverse menggabungkan data daripada sumber yang berbeza? Dan kemudian akses data itu dalam Apl Kuasa anda?
  4. Untuk permulaan proses perniagaan, bolehkah anda menggunakan tindakan yang dicetuskan Pelayan dan bukannya memanggil Flow Power Automate ?
  5. Bolehkah anda membuat paparan pada pelayan yang menyertai data untuk anda?
  6. Jika anda ingin menggunakan data luar talian dalam apl anda, bolehkah anda menggunakan Power Apps ciri luar talian yang berfungsi dengan Dataverse? Jika data anda tidak masuk Dataverse, bolehkah anda memindahkannya ke sana?