МЕТОД ПІДВИЩЕННЯ ПРОДУКТИВНОСТІ ВЕБДОДАТКУ В ЕКОСИСТЕМІ ФРЕЙМВОРКУ REACT
DOI:
https://doi.org/10.35546/kntu2078-4481.2023.3.12Ключові слова:
методи підвищення продуктивності вебдодатків, екосистема фреймворку React, Context API, PureComponent, React.memo, shouldComponentUpdate, Redux, Recoil, Lazy Loading, Code Splitting, мемоізація селекторів, концепція керування станомАнотація
У статті розглянуто наявні методи підвищення продуктивності вебдодатку в екосистемі фреймворку React, їх переваги та недоліки, зокрема, використання React.memo, PureComponent, shouldComponentUpdate, Lazy Loading, Code Splitting та мемоізації селекторів. Запропоновано оптимізований метод, який дозволяє скоротити час виконання програми в середньому на 17%. Основна ідея запропонованого методу полягає в розділенні стану даних вебдодатку на атомарні фрагменти. Кожна сутність має свій власний фрагмент стану, що ізолює його від інших. Ці фрагменти використовуються React Context API для передачі конфігурації сутності, включаючи дані та функції для її зміни. Context API використовується для забезпечення обробки усієї програми. Стан розділяється на атомарні фрагменти, що дозволяє реалізувати їх ізоляцію. За допомогою функції hook отримується доступ до цих фрагментів та їх зміни. Компоненти, які використовують цей метод, автоматично реагують на зміни стану і оновлюються, якщо стан змінився. Головною перевагою такого підходу є можливість використання технології замикання та передавання функції обробників стану. Запропонований метод базується на підході, який було запозичено з бібліотеки Recoil. Цей підхід є схожим на стандартні функції-хуки у фреймворку React, для якого було розроблено запропонований метод. Було використано переваги та недоліки використання популярних бібліотек для керування станом у вебдодатках. Метою модифікації було уникнення надмірних операцій, коли поточний та новий стани не відрізняються, покращення продуктивності при додаванні великої кількості елементів та забезпечення можливості використання схожих частин коду багаторазово. Особливу увагу приділено проблемі надмірних операцій, які виникають, коли всі компоненти, що підписані на зміну стану, автоматично оновлюються, навіть якщо самі значення стану не змінились. Додано можливість перевірки рівності станів перед їх оновленням, що дозволяє заощадити ресурси та зберегти продуктивність. Також реалізовано спрощено роботу з функціями зміни стану, щоб їх можна було знову використовувати без повторення коду.
Посилання
Pronina D., Kyrychenko I. (2022) Comparison of Redux and React Hooks Methods in Terms of Performance. COLINS-2022: 6th International Conference on Computational Linguistics and Intelligent Systems, May 12–13, Gliwice, Poland, pp. 3-7.
Shailesh Shivakumar, P.V. Suresh (2018) A Survey and Analysis of Techniques and Tools for Web Performance Optimization, Journal of Information Organization, Vol. 8, No. 2, pp. 31-57.
Chi, Xiaoni, Liu, Bichuan, Niu, Qi, Wu, Qiuxuan (2012) Web Load Balance and Cache Optimization Design Based Nginx under High-Concurrency Environment, Third International Conference on Digital Manufacturing & Automation, pp. 1029-1032.
Yanan Wang, Huarui Wu and Feng Huang (2014) High-performance concurrent Web application system analysis and research, Computer Engineering and Design Optimization, vol. 08, pp. 2976-2981.
Y. Yao and J. Xia (2016) Analysis and research on the performance optimization of Web application system in high concurrency environment, 2016 IEEE Information Technology, Networking, Electronic and Automation Control Conference, pp. 321-326, doi: 10.1109/ITNEC.2016.7560374.
Mohammed Zagane, Mustapha Kamel Abdi (2019) Evaluating and Comparing Size, Complexity and Coupling Metrics as Web Applications Vulnerabilities Predictors. International Journal of Information Technology and Computer Science (IJITCS), Vol.11, No.7, pp.35-42, DOI: 10.5815/ijitcs.2019.07.05
Ruqia Bibi, Munazza Jannisar, Mamoona Inayet (2016) Quality Implication for Prognoses Success in Web Applications. IJMECS, Vol.8, No.3, pp.37-44, DOI: 10.5815/ijmecs.2016.03.05
Oleshchenko, L., Burchak, P. (2023) Web Application State Management Performance Optimization Methods. In: Hu, Z., Dychka, I., He, M. (eds) Advances in Computer Science for Engineering and Education VI. ICCSEEA 2023. Lecture Notes on Data Engineering and Communications Technologies, vol. 181. Springer, Cham. https://doi.org/10.1007/978-3-031-36118-0_6