Mengoptimalkan pemuatan aplikasi atau halaman untuk performa puncak
Salah satu faktor kunci yang membentuk persepsi pengguna tentang aplikasi adalah seberapa cepat aplikasi dibuka dan berfungsi. 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 yang umum.
Muat data dengan cepat
Ikuti panduan ini untuk mendapatkan 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 untuk menggunakan koleksi di aplikasi untuk tujuan lain. Menggunakan ClearCollect() berpotensi meningkatkan kecepatan aplikasi saat koleksi nanti digunakan. 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 dapat 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 'baca-saja' 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 menggunakan Power Automate untuk mengisi koleksi mereka di Power Apps. Ada sekitar biaya performa 0,6 detik untuk membuat instansi Power Automate. Power Automate harus diluncurkan secara independen setiap kali dipanggil. Itu harus mengalokasikan memori, ditempatkan dengan komponen yang tepat, dan siap untuk dijalankan. 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 Anda, dan LoadData() untuk memuatnya saat offline. Namun, pendekatan ini tidak disarankan 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 dengan Dataverse. Fitur ini dapat menangani data yang lebih besar dan lebih kompleks dengan lebih efisien.
Gunakan Pemilihan kolom eksplisit
Pemilihan kolom eksplisit diaktifkan secara default. Namun, beberapa penulis menonaktifkan fitur ini. Masalahnya adalah bahwa 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 menurunkan data sepuluh kali lebih banyak dari yang sebenarnya Anda butuhkan.
Sebagian besar masalah muncul saat membawa data ke dalam koleksi. Jika kolom direferensikan secara eksplisit dalam kontrol, maka ECS berfungsi dengan baik. Dan, ECS umumnya berfungsi untuk koleksi. Namun, silsilah kolom terkadang hilang ketika 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 tersebut ShowColumns
. Contoh:
ClearCollect(
MyColTable,
ShowColumns(Filter(BankAccounts, AcountNo = 32),
"Col1",
"Col2",
"Col3")
);
Where Col1
,, dan Col2
adalah kolom yang Anda harapkan 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 mungkin memengaruhi peluncuran aplikasi atau navigasi halaman.
Gunakan App.Formulas
Secara historis banyak penulis telah menempatkan sejumlah besar perhitungan di OnStart. Saat Anda menempatkan ekspresi di OnStart, ekspresi tersebut memaksa Power Apps untuk menjalankan ekspresi tersebut tepat saat aplikasi dimulai dan sebelum yang lainnya. Namun, dengan diperkenalkannya App.Formulas, Anda dapat memutuskan Power Apps kapan harus menjalankan ekspresi. Power Apps dapat menjalankan rumus 'Just-in-time' sebelum diperlukan. Untuk informasi selengkapnya, lihat Rumus aplikasi. Gunakan App.Formulas untuk membagi rumus Anda menjadi beberapa bagian yang Power Apps dapat mengatur lebih efisien untuk eksekusi.
Gunakan Bersamaan
Gunakan fungsi Concurrent untuk memungkinkan rumus dijalankan secara bersamaan. Biasanya menggunakan fungsi ini untuk mengisi koleksi karena memungkinkan eksekusi paralel. Meskipun ini dapat memberikan beberapa peningkatan kecepatan sederhana, menambahkan banyak sumber data dapat menyebabkan masalah waktu dan pembatasan.
Gunakan performa yang ditingkatkan untuk kontrol tersembunyi
Saat diaktifkan secara default di semua aplikasi baru yang dibuat sejak Desember 2022, Power Apps tidak merender kontrol apa pun yang awalnya tidak terlihat.
Minimalkan sumber daya yang diperlukan
Minimalkan sumber daya yang diperlukan untuk meluncurkan aplikasi atau layar Anda. Upaya ini mencakup cakupan atau partisi sumber daya yang dibutuhkan aplikasi atau layar Anda dengan hati-hati. Di bawah ini adalah beberapa pendekatan untuk membantu Anda.
Gunakan layar awal dependensi rendah dan hilangkan layar yang tidak digunakan.
Gunakan layar pertama dengan ketergantungan rendah seperti selamat datang di aplikasi Anda. Buat layar yang tidak memuat galeri atau tabel atau data referensi. Ini mengelola persepsi pengguna tentang kecepatan dan memungkinkan Power Fx untuk menunda beberapa perhitungan dengan benar nanti. Jika Anda memiliki layar yang tidak digunakan, hapus.
Jaga agar dependensi lintas layar tetap rendah antar layar
Referensi lintas halaman memaksa pemuatan halaman tambahan melalui referensi, misalnya, kontrol referensi pada halaman dan dimasukkan ke dalam koleksi. Beberapa referensi mungkin tidak dapat dihindari. Pusatkan referensi umum ke satu halaman jika memungkinkan sehingga hanya halaman yang dimuat.
Pertimbangkan media yang disematkan
Penulis terkadang menyematkan media di aplikasi mereka untuk memastikan pemuatan yang cepat. Jika Anda memiliki media yang disematkan, pertimbangkan apakah Anda menggunakannya atau tidak. Jika tidak, hapus. Jika Anda telah menyematkan file .png, pertimbangkan untuk mengganti file .svg yang lebih kecil. Perhatikan bahwa jika Anda menggunakan .svg, font untuk .svg harus ada di komputer klien. Pertimbangkan resolusi media yang disematkan. 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 init aplikasi dan akan diinisialisasi, terlepas dari apakah kita pernah menavigasi ke sana.
Pertimbangkan untuk membagi aplikasi
Jika aplikasi Anda berukuran besar, pertimbangkan untuk mempartisinya menjadi aplikasi yang lebih kecil. Jika fungsionalitasnya cukup terpisah di berbagai bagian aplikasi Anda, pendekatan ini mungkin berhasil. Dalam skenario ini, Anda membuat aplikasi terpisah aktual yang Anda luncurkan dengan parameter yang menyertakan konteks dari aplikasi pertama atau induk.
Saran
Untuk mencapai tujuan aplikasi dan awal halaman yang 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 selanjutnya dalam aplikasi? Hanya mendapatkan data yang benar-benar Anda butuhkan untuk memulai aplikasi? 1 Bisakah Anda mengonversi ekspresi di App.OnStart menjadi rumus bernama dengan App.Formulas? Hal ini memungkinkan Power Fx untuk memutuskan kapan harus benar-benar mengeksekusi rumus daripada memaksanya terjadi pada peristiwa pemuatan atau navigasi.
- Dapatkah Anda menggunakan alur terpisah Power Automate untuk membuat tabel sementara di penyimpanan data lokal seperti Dataverse yang menggabungkan data dari sumber yang berbeda? Dan kemudian mengakses data tersebut di Power App Anda?
- Untuk kick off 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 masuk Dataverse, dapatkah Anda memindahkannya ke sana?