Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Salah satu faktor kunci yang membentuk persepsi pengguna tentang aplikasi adalah seberapa cepat aplikasi dibuka dan menjadi fungsional. Oleh karena itu, memprioritaskan tujuan ini sangat penting dalam membangun aplikasi yang berperforma. Untuk mencapai performa aplikasi yang optimal, ada tiga area utama yang perlu diperhatikan:
- Muat data dengan cepat
- Perhitungan yang efisien
- Meminimalkan sumber daya yang diperlukan
Masing-masing area ini memiliki beberapa anti-pola umum.
Muat data dengan cepat
Ikuti panduan ini untuk mencapai aplikasi pemuatan data yang cepat.
Hindari mengisi koleksi secara langsung dengan data dalam jumlah besar
Terkadang penulis menggunakan ClearCollect() untuk menyalin data dari server ke koleksi di aplikasi mereka. Praktik ini adalah solusi untuk batasan delegasi di sumber atau karena mereka berencana menggunakan koleksi di aplikasi untuk tujuan lain. Menggunakan ClearCollect() berpotensi meningkatkan kecepatan aplikasi saat koleksi digunakan nanti. Namun, penting untuk berhati-hati saat menerapkannya. Menggunakan ClearCollect dengan cara ini dapat menyebabkan waktu muat aplikasi yang lebih lambat atau saat menavigasi antar halaman. ClearCollect() harus selesai sebelum Anda dapat melihat data di galeri atau tabel. Langkah ini bisa memakan waktu lama jika ada banyak data atau jika Anda menggunakan pendekatan ini untuk terlalu banyak sumber data. Koleksi paling baik digunakan untuk situasi di mana datanya kecil dan Anda perlu melakukan banyak perhitungan pada koleksi. Misalnya, penggunaan koleksi yang baik adalah keranjang pesanan Online. Pelanggan dapat memperbarui dan menghapus item beberapa kali sebelum memilih untuk melakukan pesanan. Selain itu, Anda dapat menambah koleksi dengan lebih banyak item data seperti potensi diskon, sorotan, dll. Data yang 'hanya-baca' harus diakses secara native - tanpa membawanya ke dalam koleksi.
Pertimbangkan untuk menghindari panggilan Power Automate untuk mengisi koleksi
Masalah ini adalah sedikit variasi dari bagian sebelumnya. Terkadang penulis juga digunakan Power Automate untuk mengisi koleksi mereka Power Apps. Ada sekitar 0,6 detik biaya performa untuk membuat instans Power Automate. Power Automate harus diluncurkan secara independen setiap kali dipanggil. Itu harus mengalokasikan memori, menempatkan dengan komponen yang tepat, dan siap untuk berjalan. Seperti saran di atas, satu atau dua panggilan ke mungkin Power Automate tidak menjadi masalah tergantung pada aplikasi Anda. Namun, hampir secara universal, aplikasi berkinerja terburuk menggunakan pendekatan ini secara berlebihan. Biaya performa dapat bertambah dengan cepat dan merusak performa aplikasi Anda.
Hindari menggunakan SaveData() dan LoadData() sebagai skenario offline penuh
Beberapa penulis menggunakan ClearCollect() dan kemudian SaveData() untuk menyimpan data untuk penggunaan offline tujuan umum. Anda dapat menggunakan SaveData() untuk menyimpan koleksi ke perangkat, dan LoadData() untuk memuatnya saat Anda offline. Namun, pendekatan ini tidak direkomendasikan untuk instans di mana ada sejumlah besar data atau jika datanya kompleks. Ini membuat aplikasi Anda lebih lambat karena harus menunggu ClearCollect() selesai sebelum dapat menampilkan data. Anda hanya boleh menggunakan SaveData() dan LoadData() untuk skenario data kecil dan sederhana seperti preferensi dan daftar pendek. Cara yang lebih baik untuk bekerja dengan data offline dalam jumlah besar adalah dengan menggunakan Power Apps fitur offline yang berfungsi dengannya Dataverse. Fitur ini dapat menangani data yang lebih besar dan lebih kompleks dengan lebih efisien.
Menggunakan Pemilihan kolom eksplisit
Pemilihan kolom eksplisit diaktifkan secara default. Namun, beberapa penulis menonaktifkan fitur ini. Masalahnya adalah dengan Pemilihan kolom eksplisit (ECS) diaktifkan, kolom terkadang tidak diambil dari sumber data jika data pertama kali diambil ke dalam koleksi. Karena beberapa tabel mungkin memiliki banyak kolom, ECS secara otomatis menghitung kolom mana yang perlu diambil berdasarkan penggunaannya dalam kontrol (misalnya, galeri dan formulir.) Karena beberapa tabel dapat memiliki banyak kolom, mengurangi ukuran unduhan dapat mempercepat kinerja. Beberapa tabel dapat memiliki seratus kolom atau lebih. Jika aplikasi Anda hanya perlu menggunakan 10 kolom, dan Anda menurunkan semua kolom dari tabel 100 kolom, Anda akan menurunkan data sepuluh kali lebih banyak dari yang sebenarnya Anda butuhkan.
Sebagian besar masalah muncul saat memasukkan data ke dalam pengumpulan. Jika kolom direferensikan secara eksplisit dalam kontrol, maka ECS berfungsi dengan baik. Dan, ECS umumnya bekerja untuk koleksi. Namun, silsilah kolom terkadang hilang saat data bergerak melalui koleksi dan variabel. Dan, dan dengan demikian Power Apps mungkin kehilangan jejak kolom yang harus diambil. Untuk mengatasi masalah ini, Anda dapat memaksa Power Apps untuk "mengingat" kolom dengan menggunakan fungsi ini ShowColumns . Contoh:
ClearCollect(
MyColTable,
ShowColumns(Filter(BankAccounts, AcountNo = 32),
"Col1",
"Col2",
"Col3")
);
Di mana Col1,, dan Col2adalah kolom yang Anda harapkan untuk diambil dari sumber data (misalnya, Col3 sumber Account data).
Atau, Anda dapat menambahkan kontrol tersembunyi ke formulir Anda yang mereferensikan kolom. Ini memaksa Power Apps untuk "mengingat" kolom.
Penghitungan cepat
Perhitungan cepat (atau efisien) adalah tujuan kinerja tersendiri. Untuk informasi selengkapnya, lihat Perhitungan cepat (efisien). Namun, ada beberapa anti-pola umum yang dapat memengaruhi pemuatan aplikasi juga, jadi kami membahasnya di sini. Di bawah ini adalah daftar pengoptimalan yang harus Anda pertimbangkan yang dapat memengaruhi peluncuran aplikasi atau navigasi halaman.
Menggunakan App.Formulas
Secara historis banyak penulis telah menempatkan sejumlah besar perhitungan di OnStart. Saat Anda menempatkan ekspresi di OnStart, itu memaksa Power Apps untuk menjalankan ekspresi tersebut tepat saat aplikasi dimulai dan sebelum yang lainnya. Namun, dengan pengenalan App.Formulas, Anda dapat membiarkan Power Apps memutuskan kapan harus menjalankan ekspresi. Power Apps dapat menjalankan rumus 'Just-in-time' sebelum dibutuhkan. Untuk informasi selengkapnya, lihat Rumus aplikasi. Gunakan App.Formulas untuk membagi rumus Anda menjadi beberapa bagian yang Power Apps dapat mengatur eksekusi dengan lebih efisien.
Gunakan Bersamaan
Gunakan fungsi Concurrent untuk memungkinkan rumus dijalankan secara bersamaan. Adalah umum untuk menggunakan fungsi ini untuk mengisi koleksi karena memungkinkan eksekusi paralel. Meskipun ini dapat memberikan beberapa percepatan sederhana, menambahkan banyak sumber data dapat menyebabkan masalah waktu dan pembatasan.
Gunakan kinerja yang ditingkatkan untuk kontrol tersembunyi
Saat diaktifkan secara default di semua aplikasi baru yang dibuat sejak Desember 2022, Power Apps tidak menampilkan kontrol apa pun yang awalnya tidak terlihat.
Minimalkan sumber daya yang dibutuhkan
Minimalkan sumber daya yang diperlukan untuk meluncurkan aplikasi atau layar Anda. Upaya ini mencakup penentuan ruang lingkup atau pembagian sumber daya yang dibutuhkan aplikasi atau layar Anda secara cermat. Berikut adalah beberapa pendekatan untuk membantu Anda.
Gunakan layar awal ketergantungan rendah dan hilangkan layar yang tidak digunakan.
Gunakan layar pertama dengan ketergantungan rendah seperti ucapan selamat datang pada aplikasi Anda. Buat layar yang tidak memuat galeri, tabel, atau data referensi. Ini mengatur persepsi pengguna terhadap kecepatan dan memungkinkan Power Fx untuk menunda beberapa perhitungan dengan benar ke tahap selanjutnya. Jika Anda memiliki layar yang tidak digunakan, lepaskan.
Jaga agar ketergantungan antar layar tetap rendah
Referensi lintas halaman memaksa pemuatan halaman tambahan melalui referensi, misalnya, mereferensikan kontrol pada halaman dan memasukkannya ke dalam koleksi. Beberapa referensi mungkin tidak dapat dihindari. Jika memungkinkan, pusatkan referensi umum ke satu halaman sehingga hanya halaman tersebut yang dimuat.
Pertimbangkan media tertanam
Penulis terkadang menyematkan media dalam aplikasi mereka untuk memastikan pemuatan yang cepat. Jika Anda memiliki media tertanam, pertimbangkan apakah Anda menggunakannya atau tidak. Jika tidak, hapus saja. Jika Anda telah menyematkan file .png, pertimbangkan untuk mengganti file .svg yang lebih kecil. Perhatikan bahwa jika Anda menggunakan .svg, font untuk .svg harus berada di mesin klien. Pertimbangkan resolusi media yang tertanam. Apakah terlalu tinggi untuk perangkat yang akan digunakan?
Jangan lupa App.StartScreen
Jika Anda menggunakan App.StartScreen, pastikan layar pertama adalah layar kosong. Karena pengemasan aplikasi saat ini, layar logis pertama selalu dibundel dengan logika inisialisasi aplikasi dan akan diinisialisasi, terlepas dari apakah kita menavigasi ke sana atau tidak.
Pertimbangkan untuk membagi aplikasi
Jika aplikasi Anda besar, pertimbangkan untuk membaginya menjadi aplikasi yang lebih kecil. Jika fungsinya cukup terpisah di berbagai bagian aplikasi Anda, pendekatan ini mungkin berhasil. Dalam skenario ini, Anda membuat aplikasi terpisah sebenarnya yang Anda luncurkan dengan parameter yang menyertakan konteks dari aplikasi pertama atau induk.
Saran
Untuk mencapai tujuan memulai aplikasi dan halaman dengan cepat, pertimbangkan pertanyaan dan saran berikut:
- Apakah Anda memuat banyak data di layar pertama? Bisakah Anda menggunakan layar pertama yang berbeda?
- Apakah Anda menjalankan banyak perintah atau Power Fx ekspresi di awal pemuatan aplikasi? Bisakah Anda menunda perintah dan ekspresi ini ke titik berikutnya dalam aplikasi? Hanya mendapatkan data yang benar-benar Anda perlukan untuk memulai aplikasi? 1 Dapatkah Anda mengubah ekspresi di App.OnStart menjadi rumus bernama dengan App.Formulas? Hal ini memungkinkan Power Fx untuk memutuskan kapan benar-benar mengeksekusi rumus alih-alih memaksanya terjadi pada peristiwa pemuatan atau navigasi.
- Dapatkah Anda menggunakan alur Power Automate terpisah untuk membuat tabel sementara di penyimpanan data lokal seperti Dataverse yang menggabungkan data dari berbagai sumber? Lalu mengakses data tersebut di Power App Anda?
- Untuk memulai proses bisnis, dapatkah Anda menggunakan tindakan yang dipicu Server daripada memanggil Power Automate Flow?
- Bisakah Anda membuat tampilan di server yang menggabungkan data untuk Anda?
- Jika Anda ingin menggunakan data offline di aplikasi Anda, dapatkah Anda menggunakan Power Apps fitur offline yang berfungsi Dataverse? Jika data Anda tidak ada di Dataverse, dapatkah Anda memindahkannya ke sana?