В ходе выполнения настоящей работы рассмотрены отдельные методики оптимизации производительности веб-приложений, разработка которых осуществляется на основе фреймворка Yii2. Определен необходимый для достижения цели исследования терминологический аппарат. Предложена классификация методик оптимизации производительности веб-приложений с использованием фреймворка Yii2 по компонентам программной системы. В рамках соответствующей классификации предлагается осуществлять оптимизацию производительности веб-приложений на уровнях: фреймворка Yii2; базы данных; фронтенда (клиентской части приложения); а также серверной инфраструктуры. Приведенный подход составил научную новизну настоящего исследования.
В первой главе определен терминологический аппарат исследования, рассмотрены общие принципы оптимизации производительности веб-приложений. Сделаны выводы о том, что оптимизация производительности веб-приложений представляет собой комплексную задачу, которая включает различные уровни системы – от клиентской части до серверной инфраструктуры. Оптимизация производительности должна основываться на объективных данных, полученных с помощью бенчмаркинга, профилирования и мониторинга. Для определения актуального состояния системы и принятия решений относительно выбора методик оптимизации необходимо учитывать различные метрики измерения и анализа производительности.
Во второй главе проанализированы возможности оптимизации, которые предоставлены фреймворком Yii2. Рассмотрены такие способы оптимизации, как настройка конфигурации; кэширование; эффективная работа с Active Record. Показано, что использование встроенных инструментов позволяет снизить нагрузку на сервер и базу данных.
По результатам анализа, проведенного во второй главе, можно сделать вывод о том, что оптимизация на уровне фреймворка Yii2 позволяет повысить производительность веб-приложения без изменения серверной инфраструктуры. В практической части работы применение простого встроенного инструмента минификации позволило увеличить скорость загрузки статических ресурсов в рамках разработанного для настоящей работы приложения примерно в три раза.
Третья глава посвящена оптимизации производительности на уровне базы данных как одного из наиболее важных компонентов веб-приложения. Рассмотрены методики оптимизации структуры базы данных, эффективного построения SQL-запросов, а также оптимизации доступа к данным. Сделан вывод о том, что именно база данных часто становится главным источником задержек при работе веб-приложений.
По результатам анализа, проведенного в третьей главе, можно сделать выводы о том, что оптимизация на уровне базы данных играет важную роль в обеспечении высокой производительности веб-приложений. Наиболее значительное влияние оказывают определение обоснованной структуры базы данных, использование индексов, а также корректное построение SQL-запросов.
Комплексное применение приведенных методик оптимизации позволит существенно снизить нагрузку на базу данных, ускорить выполнение запросов, а также повысить масштабируемость системы. В совокупности с оптимизацией на уровнях фреймворка, фронтенда и инфраструктуры это позволит обеспечить стабильную и эффективную работу веб-приложения. В практической части работы применение индексов позволило увеличить скорость выполнения запроса примерно в 975 раз.
В четвертой главе исследованы методики оптимизации производительности приложения на уровне фронтенда (клиентской части приложения). Рассмотрены способы уменьшения объема передаваемых данных, минификации и объединения ресурсов, отложенной загрузки мультимедиа, использования CDN, асинхронного взаимодействия с сервером и оптимизации рендеринга. Показано, что производительность интерфейса напрямую влияет на пользовательский опыт и восприятие скорости работы системы.
По результатам анализа, проведенного в четвертой главе, можно сделать выводы о том, что оптимизация фронтенда играет важную роль в обеспечении высокой скорости работы веб-приложения и комфортного пользовательского опыта. Основные направления повышения производительности включают следующие методики: уменьшение размера и количества загружаемых файлов; отложенную загрузку мультимедиа; использование CDN для статических ресурсов; асинхронное взаимодействие с сервером; оптимизацию структуры страницы и рендеринга. Комплексное применение данных методов позволяет значительно сократить время загрузки страниц, снизить нагрузку на сервер и повысить отзывчивость интерфейса, что особенно важно для современных высоконагруженных веб-приложений.
Пятая глава посвящена инфраструктурным методам оптимизации. Рассмотрены возможности настройки веб-сервера Nginx, включая настройку кэширования статических ресурсов, сжатие данных, оптимизацию параметров соединений, а также микрокэширование. По результатам анализа, проведенного в пятой главе, можно сделать вывод о том, что инфраструктурные методы оптимизации играют важную роль в обеспечении высокой производительности веб-приложений и могут параллельно осуществляться наряду с другими методиками.
В практической части работы сделан вывод о том, что применение алгоритмов сжатия позволяет существенно уменьшить размер передаваемых файлов (до 87-89 %). Алгоритм сжатия Brotli более эффективен, чем Gzip. В среднем алгоритм Brotli обеспечивает степень сжатия на 2-5 % выше по сравнению с Gzip в зависимости от конкретного файла.
В результате проведенного исследования можно сделать следующие основные выводы:
1)производительность веб-приложения зависит от совокупности факторов и часто не может быть в полной мере обеспечена оптимизацией только одного компонента системы;
2)наибольшей эффективности можно достичь посредством применения комплексного подхода к оптимизации производительности, охватывающего все необходимые уровни оптимизации;
3)оптимизация производительности базы данных, включающая обоснованное определение структуры таблиц, уместное применение индексов, а также устранение избыточных запросов, позволяет существенно повысить скорость работы приложения;
4)оптимизация на уровне фронтенда играет важную роль в улучшении пользовательского опыта и в отдельных случаях позволяет снизить нагрузку на сервер;
5)инфраструктурные способы оптимизации производительности веб-приложений обеспечивают устойчивость и предсказуемость работы системы при росте нагрузки.
Таким образом, поставленная цель работы – систематизация методик оптимизации производительности веб-приложений, разработанных с использованием фреймворка Yii2, была достигнута.
Практическая значимость работы заключается в том, что рассмотренные методики оптимизации производительности могут быть использованы при разработке, сопровождении и рефакторинге современных веб-приложений различного масштаба, включая высоконагруженные. Применение в процессе разработки веб-приложений рассмотренных в настоящей работе методик позволит:
- повысить скорость работы веб-приложений и улучшить пользовательский опыт в процессе взаимодействия с таким приложением;
- снизить нагрузку на серверную инфраструктуру и базу данных (а также сократить расходы на обслуживание такой инфраструктуры и энергопотребление);
- повысить надежность, предсказуемость работы системы, обеспечить масштабируемость приложения.
По мере повышения требований к производительности веб-приложений оптимизация производительности таких приложений будет приобретать все большее значение в процессе разработки программного обеспечения. Перспективным направлением дальнейших исследований может стать применение в процессе оптимизации производительности приложений технологий контейнеризации и оркестрации, а также автоматического масштабирования системы исходя из актуальной нагрузки.
Coding is used in almost all aspects of life and work now, be it directly or indirectly. It’s not just for companies in the tech sector. “An increasing number of businesses rely on computer code,
Coding is used in almost all aspects of life and work now, be it directly or indirectly. It’s not just for companies in the tech sector. “An increasing number of businesses rely on computer code,
Coding is used in almost all aspects of life and work now, be it directly or indirectly. It’s not just for companies in the tech sector. “An increasing number of businesses rely on computer code,