Поділитися через


Поради та рекомендації щодо підвищення швидкодії компонованих програм

У попередніх статтях ви ознайомилися з етапами виконання та циклом виклику даних, поширеними джерелами повільної роботи програм, поширеними проблемами зі швидкодією та способами їхнього вирішення в компонованих програмах. Щоб збільшити продуктивність створених програм, скористайтеся порадами й рекомендаціями, наведеними в цій статті.

Обмеження підключень даних

Не додавайте більше 30 з’єднань в одній програмі. Новим користувачам програми запропонують виконати вхід до кожного з’єднувача, щоб кожен додатковий з’єднувач збільшував кількість часу, необхідного для запуску програми. Під час роботи програми, кожен з'єднувач потребує ресурсів процесора, пам'яті та пропускної здатності мережі при запиті програмою даних з цього джерела.

Під час виконання програми можна швидко виміряти швидкодію програми, увімкнувши Засоби для розробників у Microsoft Edge або Google Chrome. Програма може потребувати 15 секунд або довше, щоб повернути дані, якщо вона часто запитує дані із понад 30 з’єднань. Кожне додане з’єднання враховується окремо в цьому обмеженні, незалежно від типу пов’язаного джерела даних, як-от таблиці Microsoft Dataverse або SQL Server або списки, створені за допомогою Списків 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, щоб зменшити загальний час, потрібний для виконання операції:

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

Після внесення цієї зміни програма завантажує таблиці паралельно, як показано на наведеному далі зображенні.

Схема, на якій показано завантаження чотирьох таблиць одночасно.

Примітка

Додаткову інформацію про проблеми з продуктивністю OnStart та способи їх вирішення див. у розділі Подія OnStart вимагає настроювання.

Підказка

Ми рекомендуємо використовувати властивість App.StartScreen, тому що вона спрощує запуск програми та підвищує її продуктивність.

Кешування даних підстановки

За допомогою функції Set кешуйте дані із таблиць підстановки локально, щоб уникнути багаторазового отримання даних із джерела. Цей метод дозволяє оптимізувати швидкодію, якщо під час сеансу дані, швидше за все, не зміняться. Як показано в наведеному далі прикладі, дані вилучаються з джерела один раз, а потім на них робиться локальне посилання, доки користувач не виконає закриття програми.

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, і так далі. Ланцюжок залежностей може спричинити завантаження багатьох екранів.

З цієї причини слід уникати залежностей формул між екранами. У деяких випадках можна використовувати глобальну змінну або колекцію для спільного доступу до інформації між екранами.

Є виняток: у попередньому прикладі припустімо, що єдиний спосіб відобразити екран 1 – це перейти з екрану 2. У цьому разі екран 2 вже завантажено в пам’ять, коли завантажується екран 1. Додаткові дії не потрібні для виконання залежності для екрана 2, а отже немає жодного впливу на швидкодію.

Використовуйте делегування

При кожний можливості, використовуйте функції, які делегують обробку їх джерелу, а не завантажують дані для обробки на локальному пристрої. Якщо програма обробляє дані локально, для цієї операції потрібно набагато більше потужності з обробки, пам’яті та пропускної здатності мережі, особливо якщо обробляється великий набір даних.

Підказка

Докладніше про функції, що підлягають передаванню та підтримуються окремими з’єднувачами, див. у розділі з документації з’єднувача.

У якості прикладу функцій, що передаються, візьміть стовпець ідентифікаторів, визначений як тип даних Число в списку, створеному за допомогою Списків Microsoft. Формули в наведеному нижче прикладі повертатимуть результати, як очікувалося. Проте перша формула може делегуватися, а друга – не може.

Формула Делегується?
Filter ('List data source', ID = 123 ) Так
Filter(`List data source', ID ="123") Ні

Оскільки ми припускаємо, що стовпець «Ідентифікатор» у SharePoint визначається з типом даних Число, значення з правого боку має бути числовою змінною, а не змінною рядка. У іншому разі ця невідповідність може спричинити неможливість передавання формули.

Використання функцій, що не підлягають передаванню, і неналежних лімітів рядків даних для запитів, що не підлягають передаванню, може мати негативні наслідки для швидкодії програми. Докладніші відомості див. у розділі: Зрозумійте передавання функцій у компонованій програмі

Використовуйте відкладене завантаження

Увімкніть функцію попереднього перегляду для відкладеного завантаження, якщо додаток має понад 10 екранів, не має правил і багато елементів керування, які розміщені на кількох екранах і безпосередньо прив’язані до джерело даних. Якщо ви створюєте програму такого типу й не вмикаєте цю функцію, це може вплинути на швидкодію програми, тому що елементи керування на всіх екранах мають бути заповнені навіть на екранах, що не відкриті. Крім того, стає необхідно оновлювати усі екрани програми при кожній зміні в джерелі даних, наприклад, коли користувач додає запис.

Робота з великими наборами даних

Використання джерел даних і формул, які можна делегувати, щоб підтримувати продуктивність програм і дозволяти користувачам доступ до всіх необхідних відомостей і не досягати граничного значення рядка даних — 2000 запитів, що не підтримують делегування. Для стовпців запису даних, за якими користувачі можуть шукати, фільтрувати або сортувати дані, використовуйте індекси у стовпцях, описані джерелами даних, такими як SQL Server або SharePoint.

Примітка

Для отримання додаткових відомостей про те, як великі набори даних можуть спричинити поширені проблеми з швидкодією програм на різних платформах, див. статтю Великі набори даних на різних платформах завантажуються повільно.

Регулярна повторна публікація програм

Розробникам рекомендується регулярно публікувати свої програми. Оскільки платформа Power Apps оптимізується та розгортається безперервно, при публікації ваша програма регенерується з урахуванням останніх заходів із оптимізації платформи.

Не повторюйте ту саму формулу в кількох місцях

Якщо кілька властивостей виконують ту саму формулу (особливо, якщо формула складна), спробуйте задати її один раз, а потім посилатися на вихід першої властивості в наступних. Наприклад, не слід установлювати ту саму складну формулу як значення властивості DisplayMode елементів керування A, B, C, D та E. Замість цього задайте складну формулу значенням властивості DisplayMode елемента А, задайте результат властивості DisplayMode елемента А значенням властивості DisplayMode елемента В, і т.д. для елементів C, D та E.

Увімкніть функцію DelayOutput для всіх елементів керування "Введення тексту"

Якщо у вас кілька формул або правил, які посилаються на значення елементів керування Введення тексту, встановіть значенням властивості DelayedOutput цього елемента керування TRUE. Властивість Текст цього елемента керування буде оновлено лише після того, як натискання на клавіші в швидкій послідовності зупиняться. Формули та правила виконуватимуться рідше, а продуктивність програми покращиться.

Уникайте використання Form.Updates в правилах і формулах

Якщо ви посилаєтесь на введене ім’я користувача в правилі або формулі, використовуючи змінну Form.Updates, вона перебирає всі карточки даних форми й кожного разу створює запис. Для підвищення ефективності програми, слід посилатися на значення безпосередньо з картки даних або на значення елемента керування.

Використання DelayItemLoading та лічильника «Завантажується» для підвищення швидкодії колекції

Залежно від конфігурації колекція може потребувати тривалого часу для відображення видимих рядків. Існує кілька способів підвищити швидкодію.

  • Спростіть шаблон. Наприклад, можна зменшити кількість елементів керування, посилань на підстановки.
  • Колекції зі складними шаблонами можна покращити, встановивши для параметра DelayItemLoading значення true (істина), а для LoadingSpinner — LoadingSpinner.Controls. Ця зміна покращить сприйняття роботи програми, коли час відображення буде довгим. DelayItemLoading також відкладе відображення шаблонів, що дасть змогу швидко відобразити решту екрана, оскільки екран і колекція не використовуватимуть доступні ресурси одночасно.

Увімкнення програми попереднього завантаження для підвищення продуктивності

За потреби можна попередньо завантажити програму, щоб підвищити продуктивність.

  1. Увійдіть на сайт Power Apps, а потім у меню виберіть Програми.

  2. Виберіть Додаткові дії (…) для програми, якій необхідно надати спільний доступ, а потім виберіть Параметри.

  3. На панелі «Настройки», встановіть перемикач Попередньо завантажити програму для підвищення ефективності на Так. Після цього програма попередньо завантажиться.

Програма попереднього завантаження для підвищення продуктивності.

  1. Щоб зміни набрали сили для програм, убудованих у Teams, потрібно буде знову вилучити та додати програму до Teams.

    Примітка

    Це робить скомпільовані ресурси програми доступними через неавтентифіковані кінцеві точки, щоб дозволити завантажувати їх перед автентифікацією. Однак користувачі все одно зможуть використовувати ваш додаток для доступу до даних через конектори лише після завершення автентифікації та авторизації. Така поведінка гарантує, що дані, які програма отримує з джерел даних, не будуть доступні неавторизованим користувачам. Скомпільовані об’єкти програми – це набір файлів JavaScript, що містять текст, створений в елементах керування програмою (наприклад, елементах керування PCF), медіаресурси (наприклад, зображення), назву додатка та URL-адресу середовища, у якому знаходиться програма.

    Загалом, програми мають отримувати медіафайли та інформацію з джерел даних через з’єднання. Якщо медіафайли та інформацію потрібно додати до програми, не надходячи зі з’єднання, і вони вважаються конфіденційними, ви можете вимкнути це налаштування. Зверніть увагу, що вимкнення цього параметра призведе до того, що користувачам доведеться чекати трохи довше, щоб отримати доступ до програми.

Дані додатків, що зберігаються на вашому пристрої

Щоб користувачі могли швидше отримувати відомості про програму під час її запуску, певні дані зберігаються локально на вашому пристрої в кеші веб-переглядача. Інформація, що зберігається, включає відомості про програму, середовище та підключення. Ці дані зберігатимуться у веб-переглядачі відповідно до лімітів пам’яті кожного браузера. Щоб очистити збережені дані, перегляньте інструкції для кожного веб-переглядача.

Наступні кроки

Перегляньте стандарти кодування для максимізації продуктивності та полегшення підтримки програм.

Статті за темою

Ознайомтеся з етапами виконання компонованої програми й циклом виклику даних
Поширені проблеми з продуктивністю компонованих програм та способи їх вирішення
Поширені джерела повільної роботи компонованої програми
Поширені проблеми та засоби їхнього усунення для Power Apps
Усунення проблем із запуском Power Apps

Примітка

Розкажіть нам про свої уподобання щодо мови документації? Візьміть участь в короткому опитуванні. (зверніть увагу, що це опитування англійською мовою)

Проходження опитування займе близько семи хвилин. Персональні дані не збиратимуться (декларація про конфіденційність).