Aracılığıyla paylaş


En yüksek performans için uygulama veya sayfa yüklemesini iyileştirme

Bir kullanıcının bir uygulama hakkındaki algısını şekillendiren en önemli faktörlerden biri, uygulamanın ne kadar hızlı açıldığı ve işlevsel hale geldiğidir. Bu nedenle, bu hedefe öncelik vermek, yüksek performanslı bir uygulama oluşturmak için çok önemlidir. En iyi uygulama performansını elde etmek için dikkat edilmesi gereken üç ana alan bulunur:

  1. Verileri hızlı bir şekilde yükleme
  2. Verimli hesaplamalar
  3. Gerekli kaynakları en aza indirme

Bu alanların her birinin birkaç ortak karşıt kalıbı vardır.

Verileri hızlı bir şekilde yükleme

Verileri hızlı yükleyen uygulamalar elde etmek için bu yönergeleri izleyin.

Koleksiyonları doğrudan büyük miktarda veriyle doldurmaktan kaçının

Bazen yazarlar, bir sunucudan uygulamalarındaki bir koleksiyona veri kopyalamak için ClearCollect() kullanır. Bu uygulama, kaynaktaki temsilci sınırlamaları için veya uygulamadaki koleksiyonları başka amaçlarla kullanmayı planladıkları için geçici bir çözümdür. ClearCollect() kullanmak, koleksiyon daha sonra kullanıldığında uygulamanın hızını artırabilir. Ancak, uygularken dikkatli olmak önemlidir. ClearCollect'i bu şekilde kullanmak, uygulama yükleme veya sayfalar arasında gezinme sürelerinin artmasına neden olabilir. Verileri bir galeride veya tabloda görebilmeniz için ClearCollect() işlevinin tamamlanması gerekir. Çok fazla veri varsa veya bu yaklaşımı çok fazla veri kaynağı için kullanıyorsanız bu adım uzun sürebilir. Koleksiyonların iyi kullanım alanı, verilerin küçük olduğu ve koleksiyon üzerinde birçok hesaplama yapmanız gereken durumlardır. Örneğin, çevrimiçi sipariş sepetleri koleksiyonların iyi bir şekilde kullanımına örnek verilebilir. Müşteri, siparişi vermeyi seçmeden önce ürünleri birkaç kez güncelleştirebilir ve kaldırabilir. Ek olarak, koleksiyonu potansiyel indirimler, öne çıkanlar vb. gibi daha fazla veri öğesiyle genişletebilirsiniz. "Salt okunur" olan verilere, koleksiyona getirilmeden yerel olarak erişilmelidir.

Koleksiyonları doldurmak için Power Automate'e çağrı yapmaktan kaçınmayı göz önünde bulundurun

Bu sorun, önceki bölümün küçük bir varyasyonudur. Bazen yazarlar Power Apps'teki koleksiyonlarını doldurmak için de Power Automate'i kullanırlar. Power Automate örneği oluşturmak için yaklaşık 0,6 saniyelik bir performans maliyeti vardır. Power Automate, her çağrıldığında bağımsız olarak başlatılmalıdır. Bellek ayırmalı, doğru bileşenlerle konumlandırılmalı ve çalışmaya hazır olmalıdır. Yukarıdaki öneride olduğu gibi, uygulamanıza bağlı olarak bir veya iki Power Automate çağrısı sorun olmayabilir. Ancak, neredeyse evrensel olarak, en kötü performans gösteren uygulamalar bu yaklaşımı aşırı kullanan uygulamalardır. Performans maliyeti hızla artabilir ve uygulamanızın performansını bozabilir.

SaveData() ve LoadData() öğelerini tam çevrimdışı senaryo olarak kullanmaktan kaçının

Bazı yazarlar, genel amaçlı çevrimdışı kullanım için verileri depolamak üzere ClearCollect() ve ardından SaveData() kullanır. Koleksiyonu cihazınıza kaydetmek için SaveData() ve çevrimdışıyken yüklemek için LoadData() öğesini kullanabilirsiniz. Ancak, bu yaklaşım büyük miktarda verinin olduğu veya verilerin karmaşık olduğu durumlar için önerilmez. Verileri gösterebilmesi için ClearCollect() işlevinin bitmesini beklemesi gerektiğinden uygulamanızı yavaşlatır. SaveData() ve LoadData() öğelerini yalnızca tercihler ve kısa listeler gibi küçük ve basit veri senaryoları için kullanmalısınız. Büyük miktarda çevrimdışı veriyle çalışmanın daha iyi yollarından biri, Dataverse ile çalışan Power Apps çevrimdışı özelliğini kullanmaktır. Bu özellik, daha büyük ve daha karmaşık verileri daha verimli bir şekilde işleyebilir.

Açık sütun seçimini kullanma

Açık sütun seçimi varsayılan olarak açıktır. Ancak bazı yazarlar bu özelliği kapatır. Sorun, Açık sütun seçimi (ECS) açıkken verilerin önce bir koleksiyona alınması durumunda sütunların bazen veri kaynağından alınmamasıdır. Bazı tablolarda çok sayıda sütun olabileceğinden ECS, denetimlerdeki (örneğin galeriler ve formlar) kullanımlarına göre hangi sütunların alınması gerektiğini otomatik olarak hesaplar. Bazı tablolarda çok sayıda sütun olabileceğinden indirme boyutunu azaltmak performansı artırabilir. Bazı tablolarda yüz veya daha fazla sütun bulunabilir. Uygulamanızın yalnızca 10 sütun kullanması gerekiyorsa ve 100 sütunlu bir tablodaki tüm sütunları indirirseniz gerçekte ihtiyacınız olanın on katı kadar veri indirmiş olursunuz.

Çoğu sorun, verileri koleksiyonlara taşırken oluşur. Denetimde bir sütuna açıkça başvuruluyorsa ECS sorunsuz çalışır. Ayrıca ECS genellikle koleksiyonlar için çalıştırılır. Ancak veriler koleksiyonlar ve değişkenler arasında taşındığında sütun kökeni zaman zaman kaybolur. Bu durumda Power Apps alması gereken sütunun izini kaybedebilir. Bu sorunu çözmek için ShowColumns işlevini kullanarak Power Apps'i sütunu "anımsamaya" zorlayabilirsiniz. Örneğin:

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

Burada Col1, Col2 ve Col3 veri kaynağından alınmasını beklediğiniz sütunlardır (örneğin, Account veri kaynağı).

Alternatif olarak, formunuza sütuna başvuran gizli bir denetim ekleyebilirsiniz. Bu işlem, Power Apps'i sütunu "anımsamaya" zorlar.

Hızlı hesaplamalar

Hızlı (veya verimli) hesaplamalar başlı başına bir performans hedefidir. Daha fazla bilgi için bkz. Hızlı (verimli) hesaplamalar. Ancak, uygulama yükünü de etkileyebilecek bazı yaygın karşıt kalıplar vardır ve bu yüzden bunları burada ele alıyoruz. Aşağıda, uygulama başlatmayı veya sayfada gezinmeyi etkileyebilecek göz önünde bulundurmanız gereken iyileştirmelerin bir listesi bulunmaktadır.

App.Formulas'ı kullanın

Geçmiş verilere bakıldığında, birçok yazar OnStart'a çok sayıda hesaplama koymuştur. OnStart'a bir ifade yerleştirdiğinizde, Power Apps, bu ifadeyi tam olarak uygulama başlatıldığında ve diğer her şeyden önce çalıştırmaya zorlar. Ancak, App.Formulas'ın kullanıma sunulmasıyla Power Apps'in bir ifadenin ne zaman çalıştırılacağına karar vermesini sağlayabilirsiniz. Power Apps, "Tam zamanında" formülünü ihtiyaç duyulmadan önce çalıştırabilir. Daha fazla bilgi için bkz. Uygulama formülleri. Formülünüzü Power Apps'in yürütme için daha verimli bir şekilde düzenleyebileceği parçalara bölmek üzere App.Formulas'ı kullanın.

Eşzamanlı kullanım

Formüllerin aynı anda yürütülmesine izin vermek için Eşzamanlı işlevini kullanın. Paralel yürütmeye izin verdiği için koleksiyonları doldurmak üzere bu işlevin kullanımı yaygındır. Bu, biraz küçük hızlanmalar sağlayabilirken, birçok veri kaynağı eklemek zamanlama ve performans düşüşü sorunlarına neden olabilir.

Gizli denetimler için gelişmiş performansı kullanma

Aralık 2022'den bu yana oluşturulan tüm yeni uygulamalarda varsayılan olarak etkinleştirildiğinde, Power Apps başlangıçta görünür olmayan hiçbir denetimi işlemez.

Gerekli kaynakları en aza indirin

Uygulamanızı veya ekranınızı başlatmak için gereken kaynakları en aza indirin. Bu çalışma, uygulamanızın veya ekranınızın ihtiyaç duyduğu kaynakların kapsamını dikkatli bir şekilde belirlemeyi veya bölümlemeyi içerir. Aşağıda size yardımcı olacak birkaç yaklaşım bulunmaktadır.

Düşük bağımlı bir başlangıç ekranı kullanın ve kullanılmayan ekranları ortadan kaldırın.

Uygulamanızda hoş geldiniz gibi düşük bağımlılığa sahip bir ilk ekran kullanın. Galeri veya tablo ya da başvuru verileri yüklemeyen bir ekran oluşturun. Böylece, kullanıcının hız algısını yönetebilir ve Power Fx'in bazı hesaplamaları daha sonraya uygun şekilde geciktirmesini sağlayabilirsiniz. Kullanılmayan ekranlarınız varsa bunları kaldırın.

Ekranlar arasındaki ekranlar arası bağımlılıkları düşük tutun

Sayfalar arası referanslar, örneğin sayfalardaki referans denetimlerine atıfta bulunma ve koleksiyonlara yerleştirme gibi referanslar aracılığıyla ek sayfaların yüklenmesini zorlar. Bazı referanslar kaçınılmaz olabilir. Mümkünse yalnızca sayfanın yüklenmesi için ortak referansları tek bir sayfada merkezileştirin.

Yerleştirilmiş medyayı göz önünde bulundurun

Yazarlar bazen hızlı yüklemeyi sağlamak için uygulamalarına medya yerleştirir. Yerleşik medyanız varsa bu medyayı kullanıp kullanmadığınızı düşünün. Kullanmıyorsanız silin. .png dosyası yerleştirdiyseniz daha küçük bir .svg dosyası ile değiştirmeyi düşünün. .svg kullanıyorsanız .svg yazı tipinin istemci makinede olması gerektiğini unutmayın. Yerleştirilmiş medya çözünürlüğünü göz önünde bulundurun. Kullanılacağı cihaz için çok mu yüksek?

App.StartScreen'i unutmayın

App.StartScreen kullanıyorsanız ilk ekranın boş bir ekran olduğundan emin olun. Uygulamanın mevcut paketlemesi nedeniyle, ilk mantıksal ekran her zaman uygulama başlatma mantığıyla birlikte gelir ve bu ekrana gidip gitmediğimize bakılmaksızın başlatılır.

Uygulamayı bölmeyi düşünün

Uygulamanız büyükse daha küçük uygulamalara bölmeyi göz önünde bulundurun. İşlevsellik, uygulamanızın farklı bölümlerinde yeterince ayrıysa bu yaklaşım işe yarayabilir. Bu senaryoda, ilk veya üst uygulamadan bağlam içeren parametrelerle başlattığınız gerçek bir ayrı uygulama oluşturursunuz.

Öneriler

Hızlı bir uygulama ve sayfa başlangıcı hedefine ulaşmak için aşağıdaki soruları ve önerileri göz önünde bulundurun:

  1. İlk ekranda çok fazla veri mi yüklüyorsunuz? Farklı bir ilk ekran kullanabilir misiniz?
  2. Uygulama yüklemesinin başlangıcında çok sayıda komut veya Power Fx ifadesi çalıştırıyor musunuz? Bu komutları ve ifadeleri uygulamada daha sonraki bir noktaya erteleyebilir misiniz? Yalnızca uygulamayı başlatmak için gerçekten ihtiyacınız olan verileri mi alıyorsunuz? 1 App.OnStart'taki ifadeleri App.Formulas ile adlandırılmış formüllere dönüştürebilir misiniz? Böylece, formülü yükleme veya gezinme olaylarında gerçekleşmeye zorlamak yerine Power Fx'in gerçekten ne zaman yürütüleceğine karar vermesini sağlayabilirsiniz.
  3. Yerel bir veri deposunda farklı kaynaklardan gelen verileri birleştiren Dataverse gibi geçici bir tablo oluşturmak için ayrı bir Power Automate akışı kullanabilir misiniz? Ardından bu verilere Power App'inizden erişmek ister misiniz?
  4. İş süreci başlangıçları için Power Automate akışı çağırmak yerine sunucu tarafından tetiklenen eylemleri kullanabilir misiniz?
  5. Sunucuda sizin için verileri birleştiren bir görünüm oluşturabilir misiniz?
  6. Uygulamanızda çevrimdışı verileri kullanmak istiyorsanız Dataverse çalışan Power Apps çevrimdışı özelliğini kullanabilir misiniz? Verileriniz Dataverse'te değilse Dataverse'e taşıyabilir misiniz?