Навигация
- 1.1 Понятие, виды и значение оптимизации производительности
- 1.2 Основные показатели производительности
- 1.3 Основные способы анализа производительности
1 Общие принципы оптимизации
1.1 Понятие, виды и значение оптимизации производительности
Согласно статистическим данным, количество интернет-пользователей в России ежегодно увеличивается1. Кроме того, в мире ежедневно создается около 495 млн терабайт данных (по состоянию на 2025 год)2. Это приводит к увеличению нагрузки на веб-приложения, увеличению размера баз данных. Вместе с тем, пользователи предъявляют высокие требования к веб-приложениям, которые должны не только выполнять определенные задачи, но и делать это быстро. Способность приложения быстро и эффективно обрабатывать запросы пользователей представляет собой производительность веб-приложения.
По мнению Мартина Фаулера, под производительностью можно понимать один из двух показателей – время отклика или пропускную способность, в зависимости от того, какой показатель имеет наибольшее значение в конкретной ситуации. В некоторых ситуациях бывает трудно судить о производительности, если, например, использование определенного решения повышает пропускную способность и при этом увеличивает время отклика. С точки зрения пользователя, значение быстроты реагирования может оказаться более важным показателем по сравнению с временем отклика, по этой причине, улучшение показателя быстроты реагирования ценой потери пропускной способности или возрастания времени отклика способно повысить производительность3.
В приведенной цитате Мартин Фаулер использует схожие по форме термины (время отклика и быстрота реагирования), которые необходимо разъяснить. Время отклика представляет собой общее время от отправки запроса до получения полного ответа (объективный показатель, например, полный ответ получен через 2 секунды). Тогда как быстрота реагирования – это то, как быстро система начинает реагировать на действие пользователя (субъективный фактор, который зависит от восприятия пользователя, например, мгновенный отклик интерфейса приложения). Другими словами, Мартин Фаулер делает акцент на значимости субъективного восприятия пользователем скорости работы приложения. Иногда можно ухудшить время отклика, но улучшить ощущение быстроты. Несмотря на то, что время отклика является объективной метрикой, быстрота реагирования часто оказывает большее влияние на восприятие производительности пользователем.
Скорость загрузки страниц сайта это один из важных показателей его качества. Из-за низкой скорости пользователь может не дождаться открытия страницы и перейти на другой ресурс. Это снижает уровень доверия к сайту, его посещаемость и влияет на другие статистические показатели4. Скорость выполнения запроса приложением – это показатель, который можно определить и на который можно воздействовать техническими средствами. Эту задачу помогает решать оптимизация производительности веб-приложения, которая представляет собой деятельность, направленную на увеличение скорости работы приложения. С учетом приведенных обстоятельств, значение оптимизации производительности веб-приложений постоянно возрастает. В данной работе мы будем рассматривать оптимизацию производительности веб-приложения с использованием фреймворка Yii2 как самого распространенного в России PHP-фреймворка.
По мнению Питера Смита, один из лучших способов повысить производительность PHP – это вообще его не использовать5. Соответствующая точка зрения широко распространена в сообществе инженеров программного обеспечения и должна учитываться при определении перечня технологий для решения поставленных перед разработчиком задач. При этом, важно также отметить, что PHP динамично развивается, например, седьмая версия этого языка программирования показала существенный прирост производительности по сравнению с пятой. Кроме того, PHP до настоящего времени остается наиболее распространенным языком программирования, который используется в разработке веб-приложений.
В числе основных причин необходимости оптимизации производительности веб-приложений можно выделить следующие: улучшение пользовательского опыта (пользователи ожидают мгновенной реакции интерфейса приложения, долгий ответ веб-приложения часто влечет за собой отказ от использования сервиса); повышение масштабируемости (оптимизированное приложение может обслуживать больше пользователей без увеличения аппаратных ресурсов); снижение расходов на инфраструктуру (эффективное использование процессора, памяти и сети позволяет уменьшить расходы на инфраструктуру); повышение надежности системы (при оптимизации уменьшается вероятность перегрузки, отказов и падений приложения); соответствие требованиям поисковых систем (скорость загрузки страниц влияет на ранжирование сайтов).
В литературе отмечается, что значимым фактором успеха приложений в современной цифровой среде является их производительность. Скорость загрузки страниц, отзывчивость интерфейса и визуальная стабильность напрямую влияют на пользовательский опыт, который влияет на показатели конверсии и конкурентоспособность бизнеса. Пользователи предъявляют все более высокие требования к качеству веб-приложений (в том числе в части производительности). По этой причине разработчики веб-приложений применяют методики оптимизации, такие как серверный рендеринг, генерация статического сайта, разделение кода и использование современных фреймворков для повышения эффективности веб-приложений. Приведенные способы оптимизации позволяют улучшить пользовательский опыт, а также обеспечить более высокие позиции веб-приложений при ранжировании поисковыми системами.
С ростом сложности веб-приложений и растущими требованиями к мультимедийному контенту и интерактивности оптимизация производительности стала неотъемлемым аспектом веб-разработки. Используя передовые инструменты и технологии оптимизации, разработчики гарантируют, что веб-приложения остаются быстрыми, эффективными и удобными для пользователя, даже если они обрабатывают более сложные функции. Оптимизация производительности имеет важное значение не только для обеспечения превосходного пользовательского опыта, но и для достижения долгосрочного успеха бизнеса в высококонкурентной онлайн-среде6.
Оптимизация производительности веб-приложений – это обширная область программной инженерии. Оптимизировать производительность веб-приложения, разработанного с использованием фреймворка Yii2, можно на нескольких уровнях. Использование какого-то одного способа оптимизации производительности часто оказывается недостаточно для обеспечения наибольшей производительности веб-приложения. Для оптимизации производительности необходимо использовать встроенные возможности фреймворка Yii2, оптимизировать производительность на уровне инфраструктуры, оптимизировать на уровне базы данных, а также на клиентской стороне (уровне фронтенда). Комплексный и системный подход к оптимизации производительности веб-приложения позволяет обеспечить устойчивую работу веб-приложения, сократить расходы на инфраструктуру, добиться наибольшей производительности веб-приложения. Однако, в настоящее время недостаточно литературы, которая бы подходила к вопросам оптимизации комплексно. Данная работа призвана восполнить существующий пробел.
В настоящей работе ограничимся рассмотрением следующих методик оптимизации производительности веб-приложений: на уровне фреймворка Yii2, который предоставляет для этого широкие встроенные возможности (глава 2 ВКР); на уровне базы данных (глава 3 ВКР); на уровне фронтенда (глава 4 ВКР); инфраструктурные методы оптимизации (глава 5 ВКР). Важно отметить, что приведенный перечень уровней оптимизации производительности веб-приложений не является исчерпывающим и может быть дополнен другими (например, отдельно можно выделить сетевой уровень).
В рамках каждого вида оптимизации будут рассмотрены конкретные методики. Под методикой оптимизации производительности веб-приложения в рамках настоящей работы будет пониматься конкретный прием, способ, который позволяет воздействовать на веб-приложение с целью увеличения скорости работы соответствующего приложения. Каждая конкретная методика оптимизации производительности веб-приложения призвана ответить на вопрос: «Как можно повысить скорость работы приложения?». Такие термины как «метод», «методика» и «способ» применительно к оптимизации приложения в рамках данной работы будут использоваться в качестве синонимов.
Некоторые способы оптимизации производительности тесно связаны между собой или даже в определенной степени пересекаются. Это соответствует достижению цели и выполнению задач настоящего исследования с учетом его комплексного характера. Например, при рассмотрении способов оптимизации производительности на уровне фреймворка (глава 2 настоящей ВКР) рассматривается минификация и объединение CSS/JS. Данный способ оптимизации можно отнести к оптимизации на клиентской стороне приложения (на уровне фронтенда), однако он рассматривается во второй главе, поскольку фреймворк Yii2 предоставляет удобные, встроенные инструменты для минификации и объединения CSS/JS через Asset Bundle. Эффективная работа с Active Record, также рассматривается во второй главе, хотя по всем признакам это оптимизация на уровне базы данных.
В отдельных главах настоящей работы рассматривается кэширование, которое предусмотрено в рамках встроенных возможностей фреймворка. При этом отдельно следует рассмотреть кэширование в клиентской части приложения (на уровне фронтенда), инфраструктуры и базы данных. Соответствующие способы кэширования существенно отличаются между собой и заслуживают отдельного рассмотрения в соответствующих главах настоящей работы. В главе 3 рассматривается кэширование на уровне базы данных, в главе 4 – на уровне фронтенда, а в главе 5 рассматривается кэширование, которое осуществляется на уровне инфраструктуры. На каждом уровне кэширование имеет свои особенности.
Во второй главе рассматриваются способы оптимизации на уровне и фронтенда, так и на уровне базы данных, несмотря на то что соответствующим уровня оптимизации посвящены отдельные главы настоящей работы (главы 4 и 3 настоящей ВКР соответственно). Такое решение в части определения структуры работы уместно, поскольку в главе 2 рассматриваются встроенные возможности оптимизации на уровне фреймворка Yii2, тогда как в других главах рассматриваются универсальные особенности оптимизации производительности без привязки к конкретному фреймворку. Избранный в рамках настоящей работы подход представляется обоснованным, поскольку позволяет обеспечить последовательный переход от общих принципов оптимизации к специальным методикам.
Оптимизацию производительности веб-приложения следует рассматривать в качестве одного из направлений деятельности в области программной инженерии. При разрешении задач, связанных с оптимизацией производительности веб-приложений, в первую очередь следует исходить из удобства использования приложения (главным образом, в части скорости ответа). Низкая скорость ответа веб-приложения часто приводит к ухудшению пользовательского опыта (пользователям важно, чтобы приложение работало быстро). Поисковые системы в отдельных случаях могут понижать позиции такого приложения при ранжировании. Недостаточная оптимизация производительности приложения нередко может приводить к увеличению расходов на серверную инфраструктуру. Осуществление деятельности в области оптимизации производительности, наряду с улучшением пользовательского опыта, позволит также сократить расходы на инфраструктуру и снизить энергопотребление. По этой причине оптимизация производительности также имеет экономическое значение.
1.2 Основные показатели производительности
Для объективной оценки эффективности оптимизации используются количественные показатели производительности (метрики). Наибольшее значение для удобства пользователя имеет такая метрика как время отклика (Response Time) приложения. Чем меньше время отклика, тем быстрее воспринимается работа приложения. Можно определить следующие составные части метрики времени отклика приложения: 1) время передачи данных по сети; 2) время ожидание запроса в очереди; 3) время обработки запроса сервером; 4) время обработки запроса базой данных; 5) время формирования и представления пользователю итогового ответа (HTML/JSON/XML), включая, при необходимости, загрузку статических ресурсов приложения, например, изображений, шрифтов, стилей и других элементов.
По мнению Д.А. Скачкова, следует выделять следующие метрики оценки производительности веб-приложений: 1) потребление ресурсов процессора (CPU, %); 2) потребление оперативной памяти (Memory usage, Mb); 3) потребление сетевых ресурсов (kb/s); 4) работа с дисковой подсистемой (I/O Wait); 5) работа с базой данных (connections, requests time (ms))7. Указанные метрики имеют важное значение на стадии выявления узких мест в работе приложении. Также следует отметить такие метрики как: число запросов в секунду (RPS) и количество одновременных соединений.
1.3 Основные способы анализа производительности
Эффективность оптимизации веб-приложений во многом зависит от регулярного выполнения определенной последовательности действий, в числе которых можно выделить следующие: измерение текущих показателей приложения; выявление узких мест; внесение изменений; повторное измерение; сравнение результатов. Таким образом, оптимизация невозможна без объективных измерений. Изменения должны основываться на результатах анализа. Можно выделить три основных способа определения производительности приложения: 1) профилирование; 2) бенчмаркинг; 3) мониторинг.
Профилирование производительности приложения представляет собой анализ времени выполнения отдельных частей приложения и потребления ресурсов. Профилирование производительности приложения позволяет определить: наиболее медленные запросы; избыточные операции; частые обращения к базе данных; узкие места в алгоритмах.
Профилирование показывает, какую долю вносит каждый элемент системы в общую стоимость получения результата. Простейшей метрикой стоимости является время, но профилирование может также измерять количество вызовов функций, операций ввода/вывода, запросов к базе данных и т. д. Важно понять, почему система работает именно так, а не иначе8.
Во фреймворке Yii2 предусмотрены встроенные средства профилирования и логирования, которые особенно полезны на этапе разработки приложения и позволяют определить узкие места и помогают в оптимизации производительности. Профилирование производительности приложения Yii2 реализовано в виде специальной вкладки («Profiling») в панели отладки приложения («Debug Panel»). Вкладка профилирования панели отладки приложения Yii2 представлена на рисунке 1.

Рисунок 1 ¾ Вкладка профилирования панели отладки приложения Yii2
Главный принцип при работе с узкими местами заключается в том, что никогда не следует ничего предполагать и всегда нужно тестировать и профилировать код, прежде чем пытаться его оптимизировать9. Профилирование в Yii2 представляет собой наиболее важный источник сведений об узких местах в производительности приложения. Однако профилированием в Yii2 покрыты только вызовы к БД, все остальное необходимо разметить вручную10.
Контролируемый бенчмаркинг позволяет сравнивать выбранные варианты, выявлять регрессии и оценивать ограничения производительности еще до того, как они обнаружатся в промышленной среде11. В наиболее общем представлении, бенчмаркинг представляет собой тестирование системы при контролируемой нагрузке для определения ее производительности. В отдельных случаях в рамках бенчмаркинга используются специализированные инструменты нагрузочного тестирования, имитирующие действия пользователей. Бенчмаркинг позволяет решать следующие задачи: определить максимальную пропускную способность; выявить поведение системы при росте нагрузки; сравнить различные конфигурации; оценить эффективность оптимизаций.
Для эффективной работы веб-приложения важно постоянно отслеживать производительность системы. Эту задачу призван решить мониторинг, который позволяет: своевременно выявлять перегрузки; обнаруживать утечки памяти; анализировать долгосрочные тенденции; предотвращать аварийные ситуации.
Statbase. Количество интернет-пользователей в России. [Электронный ресурс]. – URL: https://statbase.ru/data/rus-population-using-internet/ (дата обращения: 03.02.2026). ↩
How much data is generated every day? [Электронный ресурс]. – URL: https://soax.com/research/data-generated-per-day (дата обращения: 07.03.2026). ↩
Фаулер М. Шаблоны корпоративных приложений. Пер. с англ. – М.: ООО «И.Д. Вильямс», 2016. ↩
Работа с Яндекс Вебмастером. Как сделать сайт быстрее. [Электронный ресурс]. – URL: https://yandex.ru/support/webmaster/ru/yandex-indexing/page-speed (дата обращения: 03.02.2026). ↩
Smith P. Professional website performance: optimizing the front end and the back end. – Indianapolis: John Wiley & Sons, 2013. ↩
Алексеев П.О. Оптимизация производительности веб-приложений с использованием современных фреймворков // Universum: технические науки: электрон. научн. журн. 2025. 4 (133). [Электронный ресурс]. – URL: https://7universum.com/ru/tech/archive/item/19668 (дата обращения: 04.03.2026). ↩
Скачков Д.А. Исследование и выбор метрик оценки производительности веб-приложений // Проблемы современной науки и образования. 2014. 11 (29). ↩
Шварц Б., Зайцев П., Ткаченко В., Заводны Дж., Ленц А., Бэллинг Д. MySQL. Оптимизация производительности, 2-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2010. ↩
Bogdanov A., Eliseev D. Yii2 Application Development Cookbook. – Packt Publishing, 2016. ↩
Сафронов М. Разработка веб-приложений в Yii 2 – М.: ДМК Пресс, 2015. ↩
Грегг Б. Производительность систем. – СПб.: Питер, 2023. ↩
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,