कैनवास ऐप्स के प्रदर्शन को बेहतर बनाने के लिए सुझावों और सर्वोत्तम अभ्यास

पहले के आलेखों में, आपने कैनवस ऐप में निष्पादन चरण और डेटा कॉल प्रवाह, धीमे प्रदर्शन के आम स्रोतों और आम प्रदर्शन समस्याएं और संकल्प के बारे में जाना. अपने द्वारा बनाए गए ऐप्स के प्रदर्शन को बढ़ाने के लिए इस आलेख में दी गई युक्तियों और सर्वोत्तम अभ्यास का पालन करके भी लाभ उठा सकते हैं.

डेटा कनेक्शनों को सीमित करें

एक ऐप में 30 से अधिक कनेक्शन न जोड़ें. ऐप्स नए उपयोगकर्ताओं को प्रत्येक कनेक्टर में लॉग इन करने के लिए संकेत देते हैं, इसलिए हर एक अतिरिक्त कनेक्टर ऐप के शुरू होने के समय की मात्रा को बढ़ाता है. जब कोई अनुप्रयोग चलता है, तो प्रत्येक कनेक्टर को CPU संसाधनों, मेमोरी तथा नेटवर्क बैंडविड्थ की तब आवश्यकता होती है जब अनुप्रयोग उस स्रोत से डेटा का अनुरोध करता है.

आप ऐप चलाते समय तुरंत ही अपने ऐप के प्रदर्शन को Microsoft Edge या Google Chrome में डेवलपर टूल्स को ऑन करके माप सकते हैं. यदि आपका ऐप 30 से अधिक कनेक्शनों से बार-बार डेटा का अनुरोध करता है, तो डेटा वापस करने में 15 सेकंड से अधिक समय लगने की संभावना है. कनेक्टेड डेटा स्रोत प्रकार—जैसे Microsoft Dataverse या SQL सर्वर टेबल, या Microsoft सूचियों का उपयोग करके बनाई गई सूचियों के बावजूद, प्रत्येक जोड़े गए कनेक्शन को इस सीमा में अलग-अलग गिना जाता है.

नियंत्रणों की संख्या को सीमित करें

एक ऐप में 500 से अधिक नियंत्रण न जोड़ें. Power Apps प्रत्येक नियंत्रण को रेंडर करने के लिए एक HTML दस्तावेज़ वस्तु मॉडल बनाता है. आप जितने अधिक नियंत्रण जोड़ते हैं, Power Apps को उतने ही अधिक जनन समय की आवश्यकता होती है.

कुछ प्रकरणों में, आप समान परिणाम प्राप्त कर सकते हैं और यदि आप विशिष्ट नियंत्रणों के बजाय एक गैलरी का उपयोग करते हैं तो अनुप्रयोग अधिक तेजी से प्रारंभ होता है. इसके अलावा, आपको एक ही स्क्रीन पर नियंत्रण प्रकारों की संख्या कम करनी चाहिए. कुछ नियंत्रण (जैसे कि, PDF प्रेक्षक, डेटा टेबल तथा कॉम्बो बॉक्स) बड़ी निष्पादन स्क्रिप्टों को उपयोग में लाते हैं और प्रस्तुत करने में अधिक समय लेते हैं.

OnStart गुण का अनुकूलन करें

यदि यह उपयोगकर्ता सत्र के दौरान नहीं बदलता है तो स्थानीय तौर पर कैश डेटा के लिए ClearCollect कार्य का प्रयोग करें. इसके अलावा, डेटा स्रोतों को एक साथ लोड करने के लिए संयुक्त का प्रयोग करें; इससे किसी ऐप को आधे में डेटा को लोड करने के लिए की आवश्यकता पड़ती है. अधिक जानकारी: Power Apps में संयुक्त कार्य

संयुक्त कार्य के बिना, निम्न फॉर्मूला एक समय में चार टेबल में से प्रत्येक को लोड करता है:

ClearCollect( Product, '[SalesLT].[Product]' );
ClearCollect( Customer, '[SalesLT].[Customer]' );
ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )

आप अपने ब्राउजर के लिए डेवलपर टूल्स में इस व्यवहार की पुष्टि कर सकते हैं, जैसा निम्न चित्र में दिखाया गया है.

एक के बाद एक लोड किए जा रहे चार टेबल का डायाग्राम.

संक्रिया के लिए आवश्यक समग्र समय को कम करने हेतु आप उसी सूत्र को संगामी फ़ंक्शन में संलग्न कर सकते हैं:

Concurrent( 
    ClearCollect( Product, '[SalesLT].[Product]' ),
    ClearCollect( Customer, '[SalesLT].[Customer]' ),
    ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
    ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' ))

इस बदलाव के साथ, ऐप समानांतर में टेबल को प्राप्त करता है, जैसा निम्न चित्र में दिखाया गया है.

एक साथ लोड किए जा रहे चार टेबल का डायाग्राम.

नोट

OnStart से संबंधित प्रदर्शन समस्याओं और समाधानों के बारे में अधिक जानकारी के लिए, OnStart इवेंट को ट्यूनिंग की आवश्यकता है पढ़ें.

टिप

हम App.StartScreen संपत्ति का उपयोग करने की सलाह देते हैं क्योंकि यह ऐप लॉन्च को आसान बनाता है और ऐप के प्रदर्शन को बढ़ाता है.

कैश लुकअप डेटा

स्रोत से बारंबार डेटा पुनः प्राप्त करने से बचने हेतु स्थानीय रूप से लुकअप टेबल से डेटा कैश करने के लिए सेट करें फ़ंक्शन का उपयोग करें. यह तकनीक प्रदर्शन को अनुकूल करती है यदि डेटा किसी सत्र के दौरान शायद नहीं बदलेगा. जैसा कि निम्न उदाहरण में दिखाया गया है, एक बार स्रोत से डेटा को फिर से प्राप्त कर लिया गया, और उसके बाद उपयोगकर्ता द्वारा ऐप को बंद करने तक स्थानीय तौर पर संदर्भित किया जाता है.

Set(CustomerOrder, Lookup(Order, id = “123-45-6789”));
Set(CustomerName, CustomerOrder.Name);
Set(CustomerAddress, CustomerOrder.Address);
Set(CustomerEmail, CustomerOrder.Email);
Set(CustomerPhone, CustomerOrder.Phone);

यह विधि, संपर्क जानकारी, डिफ़ॉल्ट मान जैसे डेटा या अक्सर नहीं बदलने वाली उपयोगकर्ता जानकारी के लिए अधिक उपयोगी है. आप इस तकनीक का उपयोग डिफ़ॉल्ट और उपयोगकर्ता फ़ंक्शन के साथ भी कर सकते हैं.

स्क्रीन के बीच नियंत्रण निर्भरता से बचें

प्रदर्शन में सुधार करने के लिए, किसी ऐप की स्क्रीन को मेमोरी में केवल आवश्यकता होने पर लोड किया जाता है. यह अनुकूलन बाधित किया जा सकता है, यदि उदाहरण के लिए, स्क्रीन 1 लोडेड है और इसका एक फॉर्मूला स्क्रीन 2 से किसी नियंत्रण की संपत्ति का प्रयोग करता है. अब निर्भरता को पूरा करने हेतु स्क्रीन 2 को स्क्रीन 1 के प्रदर्शित हो सकने के पूर्व लोड किया जाना चाहिए. कल्पना करें कि स्क्रीन 2 की स्क्रीन 3 पर निर्भरता है, जिसकी स्क्रीन 4 पर एक और निर्भरता है, इत्यादि. यह निर्भरता श्रृंखला अनेक स्क्रीनों को लोड करने का कारण बन सकती है.

इस कारण से, स्क्रीनों के बीच सूत्र निर्भरता से बचें. कुछ स्थितियों में, आप स्क्रीनों के बीच जानकारी साझा करने हेतु एक वैश्विक चर या संग्रह का उपयोग कर सकते हैं.

यहां एक अपवाद है: पिछले उदाहरण में, कल्पना करें कि स्क्रीन 2 से नेविगेट करके ही स्क्रीन 1 को प्रदर्शित करना एकमात्र तरीका है. तब स्क्रीन 1 मेमरी में पहले से लोडेड होगा जब स्क्रीन 2 को लोड किया जाएगा. स्क्रीन 2 के लिए निर्भरता को फुलफिल करने के लिए किसी अतिरिक्त कार्य की आवश्यकता नहीं है, और इसलिए कोई प्रदर्शन प्रभाव नहीं है.

प्रत्यायोजन उपयोग करें

जहां संभव हो, ऐसे फ़ंक्शनों का उपयोग करें जो संसाधन के लिए स्थानीय डिवाइस में डेटा पुनः प्राप्त करने के बजाय डेटा संसाधन को डेटा स्रोत को सौंपते हैं. यदि एक ऐप को स्थानीय तौर पर डेटा संसाधित करना ही है, तो ऑपरेशन को अधिक प्रोसेसिंग पावर, मेमरी, और नेटवर्क बैंडविड्थ की आवश्यकता पड़ती है, खास कर तब जब डेटासेट बड़ा हो.

टिप

विशिष्ट कनेक्टर द्वारा समर्थित प्रतिनिधि कार्यों के बारे में जानने के लिए, कनेक्टर दस्तावेजीकरण.

प्रत्यायोजित कार्यों के उदाहरण के लिए, Microsoft सूचियों का उपयोग करके बनाई गई सूची में नंबर डेटा प्रकार के रूप में परिभाषित एक आईडी कॉलम पर विचार करें. निम्न उदाहरण में सूत्र अपेक्षित परिणाम लौटाएंगे. हालांकि, पहला फॉर्मूला डिलेगेबल है जबकि दूसरा गैर-डिलेगेबल है.

सूत्र प्रत्यायोजन योग्य?
Filter ('List data source', ID = 123 ) हाँ
Filter(`List data source', ID ="123") नहीं

क्योंकि हम मानते हैं कि SharePoint में ID कॉलम संख्या के डेटा प्रकार के साथ परिभाषित है, दाहिने ओर वाले मूल्य का किसी स्ट्रिंग चर की बजाय सांख्यिक चर होना चाहिए. अन्यथा, यह बेमेल गैर- प्रतिनिधि होने के लिए फॉर्मूला को ट्रिगर कर सकता है.

गैर- प्रतिनिधि सवालों के लिए गैर- प्रतिनिधि कार्यों और अनुचित डेटा पंक्ति सीमा का प्रयोग ऐप के प्रदर्शन पर विपरीत प्रभाव डाल सकता है. अधिक जानकारी: किसी कैनवस ऐप में प्रतिनिधि को समझना

विलंबित लोड का उपयोग करें

विलंबित लोड के लिए पूर्वावलोकन सुविधा चालू करें यदि आपके ऐप में 10 से अधिक स्क्रीन हैं, कोई नियम नहीं है, और कई नियंत्रण हैं जो कई स्क्रीन पर हैं और सीधे डेटा स्रोत से बंधे हैं। यदि आप इस तरह के ऐप को बनाते हैं और इस सुविधा को सक्षम नहीं करते हैं, ऐप प्रदर्शन को दिक्कत हो सकती है क्योंकि सभी स्क्रीन पर नियंत्रण को पॉपुलेट करना ही होगा, उन स्क्रीन पर भी जो नहीं खुले हैं. साथ ही, जब भी डेटा स्रोत बदलता है, तब अनुप्रयोग की सभी स्क्रीन अपडेट की जानी चाहिए, जैसे कि जब उपयोगकर्ता कोई रिकॉर्ड जोड़ता है.

बड़े डेटासेट के साथ काम करना

उन डेटा स्रोतों और सूत्रों का उपयोग करें जिनका आपके अनुप्रयोग के अच्छा प्रदर्शन करने हेतु प्रतिनिधायन किया जा सकता है, जबकि उपयोगकर्ता अपनी आवश्यकता की सभी जानकारियों का एक्सेस कर सकते हैं, और गैर-प्रतिनिधायन योग्य क्वेरी के लिए 2000 की डेटा पंक्ति सीमा तक पहुंचने से बच सकते हैं. उन डेटा-रिकॉर्ड स्तंभों के लिए जिन पर उपयोगकर्ता डेटा को खोज, फ़िल्टर या क्रमबद्ध कर सकते हैं, SQL सर्वर या SharePoint जैसे डेटा स्रोतों द्वारा वर्णित स्तंभों पर इंडेक्स का उपयोग करें.

नोट

विभिन्न प्लेटफॉर्म पर बड़े डेटासेट द्वारा आम प्रदर्शन समस्याओं के बारे में अतिरिक्त जानकारी के लिए विभिन्न प्लेटफॉर्म पर बड़े डेटासेट धीमे से लोड हो रहे हैं पढ़ें.

अनुप्रयोगों को नियमित रूप से पुनर्प्रकाशित करें

निर्माताओं को अपने ऐप नियमित तौर पर प्रकाशित करने के लिए प्रोत्साहित किया जाता है. क्योंकि Power Apps प्लेटफॉर्म को लगातार अनुकूलित और नियोजित किया जाता है, जब आप इसे दोबारा प्रकाशित करते हैं तो नवीनतम प्लेटफॉर्म अनुकूलन के भीतर आपके ऐप को दोबारा उत्पन्न किया जाता है.

एक ही सूत्र को एकाधिक स्थानों पर दोहराने से बचें

यदि कई गुण समान सूत्र को चलाते हैं (विशेषकर यदि यह जटिल है), तो इसे एक बार सेट करने पर और फिर बाद वाले गुणों में पहले गुण के निर्गत को संदर्भित करें. उदाहरण के लिए, A, B, C, D, और E नियंत्रणों के DisplayMode गुण को एक ही जटिल सूत्र में सेट न करें. इसके बजाय, A के DisplayMode गुण को जटिल सूत्र में, B के DisplayMode गुण को A के DisplayMode गुण के परिणाम में सेट करें, और इसी प्रकार C, D, और E के गुण सेट करें.

सभी पाठ इनपुट नियंत्रणों पर DelayOutput सक्षम करें

यदि आपके पास एक से अधिक सूत्र या नियम हैं जो पाठ इनपुट नियंत्रण के मान को संदर्भित करते हैं, तो उस नियंत्रण के DelayedOutput गुण को सही (true) पर सेट करें. उस नियंत्रण का पाठ गुण केवल तभी अद्यतित किया जाएगा जब शीघ्र अनुक्रम में दर्ज किए गए कीस्ट्रोक्स बंद हो जाते हैं. सूत्र या नियम अनेक बार नहीं चलेंगे, और अनुप्रयोग के प्रदर्शन में सुधार आएगा.

नियमों और सूत्रों में Form.Updates का उपयोग करने से बचें

यदि आप किसी Form.Updates चर का उपयोग करके किसी नियम या किसी फॉर्मूला में उपयोगकर्ता- इनपुट मान को संदर्भित करते हैं, तो यह सभी फॉर्म के डेटा कार्ड पर पुनरावृत्ति करता है और हर बार रिकॉर्ड बनाता है. अपने अनुप्रयोग को अधिक कुशल बनाने हेतु, डेटा कार्ड या नियंत्रण मान से मान को सीधे संदर्भित करें.

गैलरी में प्रदर्शन को बेहतर बनाने के लिए DelayItemLoading और लोडिंग स्पिनर का उपयोग करें

कॉन्फ़िगरेशन के आधार पर, गैलरी दृश्यमान पंक्तियों को रेंडर करने में अधिक समय ले सकती है. प्रदर्शन को बेहतर बनाने के कुछ तरीके हैं.

  • टेम्पलेट को सरल बनाएं. उदाहरण के लिए, नियंत्रणों की संख्या, लुकअप के संदर्भों को कम करने पर विचार करें.
  • जटिल टेम्प्लेट वाली गैलरियां DelayItemLoading को सच पर और LoadingSpinner को LoadingSpinner.Controls पर सेट होने से लाभान्वित हो सकती हैं. रेंडर समय लंबा होने पर यह परिवर्तन कथित अनुभव को बेहतर करेगा. DelayItemLoading उन टेम्प्लेट की रेंडरिंग को भी अलग कर देगा, जो स्क्रीन के बाकी हिस्सों को तेजी से रेंडर करने देंगे क्योंकि स्क्रीन और गैलरी दोनों ही संसाधनों के लिए प्रतिस्पर्धा नहीं कर रहे हैं.

बेहतर प्रदर्शन के लिए ऐप को प्रीलोड करें सक्षम करें

प्रदर्शन बढ़ाने के लिए आप वैकल्पिक रूप से अपने ऐप को प्रीलोड कर सकते हैं.

  1. Power Apps में साइन इन करें और फिर मेनू में ऐप्स चुनें.

  2. उस अनुप्रयोग के लिए और कार्रवाई (...) चुनें, जिसे आप साझा करना चाहते हैं और फिर सेटिंग्स चुनें.

  3. सेटिंग्स पैनल में, वर्धित प्रदर्शन के लिए अनुप्रयोग प्रीलोड करें को हां पर टॉगल करें. ऐप फिर प्री-लोड होगा.

बेहतर बनाए गए प्रदर्शन के लिए ऐप को प्रीलोड करें.

  1. Teams में एम्बेड किए गए ऐप्स के प्रभावी होने के लिए परिवर्तनों के लिए, अपने ऐप को निकालें और फिर से Teams में जोड़ें.

    नोट

    यह संकलित ऐप संपत्तियों को प्रमाणीकरण से पहले लोड करने में सक्षम करने के लिए अनधिकृत समापन बिंदुओं के माध्यम से सुलभ बनाता है। हालांकि, उपयोगकर्ता प्रमाणीकरण और प्राधिकरण पूरा होने के बाद ही कनेक्टर्स के माध्यम से डेटा तक पहुंचने के लिए आपके ऐप का उपयोग कर सकते हैं। यह व्यवहार सुनिश्चित करता है कि ऐप डेटा स्रोतों से पुनर्प्राप्त डेटा अनधिकृत उपयोगकर्ताओं के लिए उपलब्ध नहीं होगा। संकलित ऐप एसेट में JavaScript फ़ाइलों का एक संग्रह शामिल होता है, जिसमें ऐप नियंत्रणों (जैसे PCF नियंत्रण), मीडिया एसेट (जैसे चित्र), ऐप का नाम और एप्लिकेशन में मौजूद परिवेश URL होता है.

    सामान्य तौर पर, ऐप्स को कनेक्शन के माध्यम से डेटा स्रोतों से मीडिया और जानकारी पुनर्प्राप्त करनी चाहिए। यदि मीडिया और जानकारी को कनेक्शन से आए बिना ऐप में जोड़ा जाना चाहिए, और इसे संवेदनशील माना जाता है, तो आप इस सेटिंग को अक्षम करना चाह सकते हैं। ध्यान दें, इस सेटिंग को अक्षम करने के परिणामस्वरूप उपयोगकर्ताओं को ऐप तक पहुंचने के लिए थोड़ी देर प्रतीक्षा करनी होगी।

आपके डिवाइस पर संग्रहीत ऐप डेटा

ऐप शुरू होने पर उपयोगकर्ताओं को ऐप विवरण तेज़ी से पुनर्प्राप्त करने की अनुमति देने के लिए, कुछ डेटा स्थानीय रूप से ब्राउज़र कैश में आपके डिवाइस पर संग्रहीत होता है। संग्रहीत की जाने वाली जानकारी में ऐप, परिवेश और कनेक्शन विवरण शामिल हैं। यह डेटा प्रत्येक ब्राउज़र की संग्रहण सीमा के आधार पर ब्राउज़र में संग्रहीत रहेगा। संग्रहीत डेटा साफ़ करने के लिए, प्रत्येक ब्राउज़र के लिए निर्देश देखें.

अगले कदम

अनुप्रयोग के प्रदर्शन को अधिकतम करने के लिए तथा अनुप्रयोग के अनुरक्षण को आसान बनाए रखने के लिए कोडिंग मानकों का पुनरीक्षण करें.

इसे भी देखें

कैनवास ऐप के निष्पादन चरणों और डेटा कॉल प्रवाह को समझें
कैनवास ऐप की सामान्य प्रदर्शन समस्याएँ और उनके समाधान
कैनवास ऐप के लिए धीमे प्रदर्शन के सामान्य स्रोत
के लिए सामान्य समस्याएं और समाधान Power Apps
Power Apps के लिए स्टार्टअप समस्याओं का निवारण करना

नोट

क्या आप हमें अपनी दस्तावेज़ीकरण भाषा वरीयताओं के बारे में बता सकते हैं? एक छोटा सर्वेक्षण पूरा करें. (कृपया ध्यान दें कि यह सर्वेक्षण अंग्रेज़ी में है)

सर्वेक्षण में लगभग सात मिनट लगेंगे. कोई भी व्यक्तिगत डेटा एकत्र नहीं किया जाता है (गोपनीयता कथन).