Навигация
- 4.1 Общие положения оптимизации на уровне фронтенда
- 4.2 Отложенная загрузка изображений и видео
- 4.3 Использование CDN для статических ресурсов
- 4.4 Асинхронная загрузка данных через AJAX и Pjax
- 4.5 Оптимизация рендеринга и уменьшение количества DOM-операций
4.1 Общие положения оптимизации на уровне фронтенда
Фронтенд-уровень отвечает за отображение интерфейса веб-приложения и взаимодействие пользователя с системой в браузере. Даже при высокой производительности серверной части веб-приложения медленная загрузка статических компонентов приложения (CSS, JavaScript, шрифты), тяжелые скрипты или неоптимальная структура страницы могут оказать негативное воздействие на скорость работы приложения.
По мнению Стива Соудерса, основная цель веб-производительности заключается в том, чтобы сократить время, которое пользователь ждет загрузку и отображение веб-страницы. Автор предлагает «Золотое правило производительности», согласно которому 80–90 % времени отклика страницы у пользователя занимает загрузка и обработка фронтенд-компонентов, а не на серверную часть. Сосредоточив усилия на оптимизации фронтенда (HTTP-запросы, кэширование, структура CSS/JavaScript и др.), можно значительно ускорить сайт1.
Оптимизация фронтенда направлена на сокращение времени загрузки страницы, уменьшение объема передаваемых данных, снижение нагрузки на браузер пользователя и повышение плавности интерфейса. В приложениях, разработанных с использованием фреймворка Yii2, фронтенд-оптимизация тесно связана с механизмами управления ресурсами (Asset Bundle) и поддержкой технологий частичной загрузки страниц.
В научной литературе отмечается, что классические методы оптимизации (сжатие изображений, применение Lazy Loading, минификация кода, оптимизация шрифтов) в совокупности способны улучшить ключевые метрики производительности до 2.5 раз2. В данной главе ВКР рассматриваются основные методы оптимизации клиентской части: минификация и объединение файлов, отложенная загрузка мультимедиа, использование CDN, асинхронная подгрузка данных и оптимизация рендеринга.
4.2 Отложенная загрузка изображений и видео
Ресурсы веб-приложения составляют значительную часть веса страницы. В данной главе под ресурсом будет пониматься ресурс в соответствии со стандартом RFC 3986. Согласно указанному стандарту, термин «ресурс» используется в общем смысле для всего, что может быть идентифицировано URI3. Загрузка всех ресурсов сразу может привести к длительному ожиданию отображения контента. По этой причине может применяться технология, так называемой отложенной загрузки (Lazy Loading) ресурсов.
Lazy Loading (отложенная загрузка) – технология, при которой ресурсы (в том числе, изображения и видео), которые участвуют в отображении этого приложения за пределами области видимости, загружались только тогда, когда эти ресурсы оказались в текущей области видимости (когда пользователь прокручивает страницу до соответствующего элемента).
Важно отметить, что иногда технология отложенной загрузки применяется исключительно в отношении загрузки изображений4. В числе преимуществ данной технологии можно отметить следующие: ускорение начальной загрузки страницы; экономия трафика; снижение нагрузки на сервер. Современные браузеры поддерживают встроенный механизм:
. Для видео аналогично: .
4.3 Использование CDN для статических ресурсов
CDN (Content Delivery Network) – географически распределенная сеть серверов, которая доставляет пользователю статические ресурсы веб-приложения с того сервера, который находится ближе всего к пользователю. Через CDN может предоставляться доступ к изображениям, стилям CSS, JavaScript-библиотекам; шрифтам, видео. Преимущества использования CDN заключаются в уменьшении задержек передачи данных, снижении нагрузки на основной сервер, повышении доступности системы, возможности кэширования на уровне сети, а также ускорении загрузки статических ресурсов пользователями из разных регионов. Например, популярные библиотеки часто подключаются через глобальные CDN:
4.4 Асинхронная загрузка данных через AJAX и Pjax
Традиционная модель работы веб-приложений предполагает полную перезагрузку страницы при каждом запросе. Это приводит к повторной загрузке неизменяемых элементов интерфейса и увеличивает время ожидания. Асинхронные технологии позволяют обновлять только необходимые части страницы.
AJAX (Asynchronous JavaScript and XML) позволяет отправлять запросы к серверу в фоновом режиме без перезагрузки страницы.
Пример запроса:
fetch('/api/data')
.then(response => response.json())
.then(data => {
document.getElementById('result').innerText = data.value;
});
Преимущества заключаются в снижении объема передаваемых данных, ускорении отклика интерфейса веб-приложения, улучшении пользовательского опыта, а также в уменьшении нагрузки на сервер.
Pjax объединяет AJAX и механизм управления историей браузера. Эта технология поддерживается в Yii2 и позволяет обновлять часть страницы, сохраняя корректный URL. Основные преимущества: обновление контента без полной перезагрузки; сохранение состояния страницы; уменьшение времени ожидания; улучшение навигации. Pjax особенно полезен для: таблиц данных; постраничной навигации; фильтрации; динамических списков.
4.5 Оптимизация рендеринга и уменьшение количества DOM-операций
Производительность фронтенда зависит не только от загрузки ресурсов, но и от эффективности работы браузера при отображении страницы. DOM (Document Object Model) представляет структуру HTML-документа. Чем сложнее дерево DOM, тем больше ресурсов требуется для его обработки. Рекомендуется: избегать избыточной вложенности элементов; использовать семантическую разметку; удалять неиспользуемые элементы; минимизировать количество узлов.
Любое изменение структуры страницы может вызвать перерасчет расположения элементов. Наиболее затратные операции: изменение размеров элементов; изменение позиции; массовое добавление узлов; частые обращения к стилям. Оптимизационные меры: группировать изменения DOM; использовать CSS-классы вместо поэлементных изменений; применять скрытие элементов перед массовыми обновлениями; использовать виртуализацию списков при больших объемах данных.
Неэффективный JavaScript может блокировать основной поток браузера. Рекомендуется: избегать тяжелых вычислений на клиенте; использовать дебаунс и троттлинг для обработчиков событий; переносить сложные операции на сервер; применять Web Workers при необходимости. Web Workers представляют собой отдельные фоновые потоки выполнения JavaScript, которые работают независимо от главного потока. С помощью них можно вынести тяжелые вычисления или обработку данных в фоновый поток, чтобы не блокировать интерфейс пользователя. Web Workers не имеют прямого доступа к DOM, но могут обмениваться данными с главным потоком через механизм сообщений.
Souders S. High Performance Web Sites: Essential Knowledge for Front-End Engineers 1st Edition. – Sebastopol: O’Reilly Media, 2007. ↩
Рахмани Д., Баранов М.Д., Кузьмин Д.А. Разработка метода оптимизации веб-приложений с целью повышения производительности // Международный журнал гуманитарных и естественных наук. 2025. 3-1 (102). ↩
Uniform Resource Identifier (URI): Generic Syntax (RFC 3986). [Электронный ресурс]. – URL: https://www.rfc-editor.org/rfc/rfc3986 (дата обращения: 10.03.2026). ↩
Wagner J. Web Performance in Action: Building Fast Web Pages. – Manning Publications, 2016. ↩
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,