Optimumkan aplikasi atau muat halaman untuk prestasi puncak

Salah satu faktor utama yang membentuk persepsi pengguna terhadap aplikasi ialah seberapa cepat ia dibuka dan berfungsi. Oleh itu, mengutamakan matlamat ini sangat penting dalam membina aplikasi pelaku. Untuk mencapai prestasi aplikasi 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 corak anti biasa.

Muatkan data dengan pantas

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

Elakkan mengisi koleksi secara langsung dengan jumlah data yang banyak

Kadangkala pengarang menggunakan ClearCollect() untuk menyalin data daripada pelayan ke koleksi dalam aplikasi mereka. Amalan ini adalah kerja sekitar untuk batasan perwakilan dalam sumber atau kerana mereka merancang untuk menggunakan koleksi dalam aplikasi untuk tujuan lain. Menggunakan ClearCollect() berpotensi meningkatkan kelajuan aplikasi apabila koleksi digunakan kemudian. Walau bagaimanapun, adalah penting untuk berhati-hati semasa melaksanakannya. Menggunakan ClearCollect dengan cara ini boleh membawa kepada masa muat aplikasi yang lebih perlahan atau semasa 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 adalah bakul pesanan dalam talian. Pelanggan boleh mengemas kini dan mengeluarkan item beberapa kali sebelum memilih untuk melakukan pesanan. Di samping itu, anda boleh menambah koleksi dengan lebih banyak item data seperti diskaun berpotensi, sorotan, dll. Data yang 'baca sahaja' harus diakses secara asli - tanpa membawanya ke dalam koleksi.

Pertimbangkan untuk mengelakkan panggilan Power Automate untuk mengisi koleksi

Isu ini adalah sedikit variasi bahagian sebelumnya. Kadang-kadang penulis juga menggunakan Power Automate untuk mengisi koleksi mereka Power Apps. Terdapat kira-kira kos prestasi 0.6 saat untuk seketika Power Automate. Power Automate mesti dilancarkan secara bebas setiap kali ia dipanggil. Ia mesti memperuntukkan memori, terletak dengan komponen yang betul, dan bersedia untuk dijalankan. Seperti nasihat di atas, satu atau dua panggilan mungkin Power Automate tidak menjadi isu bergantung pada apl anda. Tetapi, hampir secara universal, aplikasi berprestasi paling teruk menggunakan pendekatan ini. Kos prestasi boleh ditambah 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 umum di luar talian. Anda boleh menggunakan SaveData() untuk menyimpan koleksi pada 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 adalah kompleks. Ia menjadikan apl anda lebih perlahan kerana 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 adalah dengan menggunakan ciri luar talian yang Power Apps berfungsi Dataverse. Ciri ini boleh mengendalikan data yang lebih besar dan lebih kompleks dengan lebih cekap.

Menggunakan pilihan lajur Eksplisit

Pemilihan lajur eksplisit dihidupkan secara lalai. Walau bagaimanapun, sesetengah penulis 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. Oleh kerana sesetengah jadual mungkin mempunyai banyak lajur, ECS mengira lajur yang diperlukan untuk diambil semula secara automatik berdasarkan penggunaannya dalam kawalan (contohnya, galeri dan borang.) Oleh kerana 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 lajur 100, anda akan menurunkan sepuluh kali lebih banyak data yang anda perlukan.

Kebanyakan isu timbul apabila membawa data ke dalam koleksi. Jika lajur dirujuk secara eksplisit dalam kawalan maka ECS berfungsi dengan baik. Dan, ECS umumnya berfungsi untuk koleksi. Walau bagaimanapun, garis keturunan lajur kadang-kadang hilang apabila data bergerak melalui koleksi dan pemboleh ubah. Dan, dan sebagainya Power Apps mungkin kehilangan jejak lajur yang harus diambil. Untuk menyelesaikan isu ini, anda boleh memaksa Power Apps untuk "mengingati" lajur menggunakan fungsi. ShowColumns Contohnya:

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

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

Secara alternatif, anda boleh menambah kawalan tersembunyi pada borang anda yang merujuk kepada lajur. Ini memaksa Power Apps untuk "mengingati" lajur.

Pengiraan cepat

Pengiraan pantas (atau cekap) adalah matlamat prestasi dengan haknya sendiri. Untuk maklumat lanjut, lihat Pengiraan pantas (cekap). Walau bagaimanapun terdapat beberapa anti-corak biasa yang boleh menjejaskan beban aplikasi juga dan oleh itu kami membincangkannya di sini. Berikut ialah senarai pengoptimuman yang perlu anda pertimbangkan yang mungkin mempengaruhi pelancaran apl atau navigasi halaman.

Menggunakan App.Formula

Dari segi sejarah banyak penulis telah meletakkan sebilangan besar pengiraan dalam OnStart. Apabila anda meletakkan ungkapan dalam OnStart, ia memaksa Power Apps untuk menjalankan ungkapan itu dengan tepat apabila apl bermula dan sebelum segala-galanya. Walau bagaimanapun, dengan pengenalan App.Formula anda boleh membenarkan Power Apps menentukan masa untuk menjalankan ungkapan. Power Apps boleh menjalankan formula 'Tepat pada masanya' sebelum diperlukan. Untuk maklumat lanjut, lihat Formula aplikasi. Gunakan App.Formula untuk membahagikan formula anda kepada kepingan yang boleh mengatur pelaksanaan dengan Power Apps lebih cekap.

Gunakan serentak

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

Menggunakan prestasi Dipertingkat untuk kawalan tersembunyi

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

Kurangkan sumber yang diperlukan

Kurangkan sumber yang diperlukan untuk melancarkan apl atau skrin anda. Usaha ini termasuk skop atau pembahagian sumber yang diperlukan oleh apl atau skrin anda dengan teliti. Berikut adalah beberapa pendekatan untuk membantu anda.

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

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

Pastikan kebergantungan silang skrin antara skrin rendah

Rujukan halaman silang memaksa beban halaman tambahan melalui rujukan, contohnya, merujuk kawalan pada halaman dan dimasukkan ke dalam koleksi. Sesetengah rujukan mungkin tidak dapat dielakkan. Memusatkan rujukan umum kepada satu halaman jika boleh supaya hanya halaman dimuatkan.

Pertimbangkan media terbenam

Pengarang kadangkala membenamkan media dalam apl mereka untuk memastikan muatan pantas. Jika anda telah membenamkan media pertimbangkan sama ada anda menggunakannya atau tidak, 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 pelanggan. Pertimbangkan resolusi media terbenam. Adakah terlalu tinggi untuk peranti yang akan digunakan?

Jangan lupa App.StartScreen

Jika anda menggunakan App.StartScreen, pastikan skrin pertama ialah skrin kosong. Oleh kerana pembungkusan aplikasi semasa, skrin logik pertama sentiasa digabungkan dengan logik init aplikasi dan akan dimulakan, tidak kira sama ada kita pernah menavigasinya.

Pertimbangkan untuk membahagikan apl

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

Cadangan

Untuk mencapai matlamat aplikasi pantas dan halaman bermula, 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 beban aplikasi? Bolehkah anda menangguhkan arahan dan ungkapan ini ke titik kemudian dalam permohonan itu? Hanya dapatkan data yang anda benar-benar perlukan untuk memulakan aplikasi? 1 Bolehkah anda menukar ungkapan dalam App.OnStart kepada formula bernama dengan App.Formulas? Ini membolehkan Power Fx untuk memutuskan bila untuk benar-benar melaksanakan formula daripada memaksanya berlaku pada beban atau menavigasi peristiwa.
  3. Bolehkah anda menggunakan aliran berasingan Power Automate untuk mencipta jadual sementara dalam storan data setempat seperti Dataverse yang menggabungkan data daripada sumber yang berbeza? Dan kemudian capai data tersebut dalam Power App anda?
  4. Untuk memulakan proses perniagaan, bolehkah anda menggunakan tindakan pencetus Pelayan daripada memanggil Power Automate Aliran?
  5. Bolehkah anda mencipta pandangan pada pelayan yang menyertai data untuk anda?
  6. Jika anda ingin menggunakan data luar talian dalam apl anda, bolehkah anda menggunakan ciri luar talian yang Power Apps berfungsi Dataverse? Jika data anda tidak masuk Dataverse, bolehkah anda memindahkannya ke sana?