Оптимизируем загрузку изображений — ресайзим под реальные размеры блока, а не выводим гиганты
Дата публикации: 24.06.2026

Оптимизируем загрузку изображений — ресайзим под реальные размеры блока, а не выводим гиганты

Хочу себе такие же кнопки
ccb9a536

Что вы получите сразу

  • Понимание, почему «гигантские» картинки тормозят ваш сайт на Битриксе.
  • Чёткий план, как автоматически подгонять изображение под реальный размер блока, а не под размер экрана.
  • Практические инструменты (PHP‑GD, Imagick, встроенный Resize‑модуль Битрикса) и готовый код‑сниппет, который можно внедрить уже сегодня.

1. Почему размер изображения важен

Показатель Что происходит без оптимизации Что происходит после оптимизации
Трафик 1 МБ → 5 МБ на каждый запрос 1 МБ → 300 KB (экономия ≈ 70 %)
Время загрузки 3‑5 сек на медленном соединении < 1 сек
Потребление памяти сервера Большие файлы → рост RAM/CPU Маленькие файлы → стабильная нагрузка
SEO Высокий LCP (Largest Contentful Paint) → штраф Низкий LCP → рост позиций

Аналогия: представьте, что вы пытаетесь заполнить маленькую чашку огромным кувшином воды. Чаша переполняется, а кувшин всё равно тяжёлый и громоздкий. Точно так же браузер «переполняет» свою память, получая файл, который в реальности не нужен.


2. Как браузер выбирает изображение

  1. Запрос – браузер скачивает файл, указанный в src.
  2. Декодирование – даже если изображение будет масштабироваться в CSS, браузер всё равно сначала загружает оригинал.
  3. Отображение – потом происходит ресайз внутри браузера, что тратит CPU и GPU.

То есть, если ваш блок имеет ширину 300 px, а в src указана картинка 2000 px, сервер отдаёт 2000 px, а браузер потом «сжимает» её до 300 px. Это лишняя работа, как если бы вы доставляли в офис целый грузовик, а потом отрезали всё, что не нужно.


3. Подготовка изображений на сервере

3.1. Выбор инструмента

Инструмент Плюсы Минусы
GD (встроенный в PHP) Доступен в любой сборке, прост в использовании Медленнее при больших файлах
Imagick (ImageMagick) Быстрее, поддерживает WebP, AVIF Требует отдельной установки
Resize‑модуль Битрикса Интегрирован в компонент CFile::ResizeImageGet Ограничен только Битриксом

Рекомендация: если у вас уже установлен Imagick, используйте его – он экономит CPU и даёт лучшую компрессию. Если нет – GD справится с большинством задач.

3.2. Автоматический ресайз в Битриксе

<?php
use Bitrix\Main\Context;

function getResizedImage($fileId, $maxWidth, $maxHeight)
{
    $arFile = CFile::GetFileArray($fileId);
    if (!$arFile) return false;

    // Параметры ресайза
    $arSize = array('width' => $maxWidth, 'height' => $maxHeight);
    $arResize = CFile::ResizeImageGet(
        $fileId,
        $arSize,
        BX_RESIZE_IMAGE_PROPORTIONAL, // сохраняем пропорции
        true,                        // возвращаем массив с URL
        false,
        false
    );

    return $arResize['src']; // готовый URL к вставке в <img>
}
?>
  • BX_RESIZE_IMAGE_PROPORTIONAL – сохраняет соотношение сторон, что избавит от искажений.
  • Функция может быть вызвана в шаблоне компонента, где известны размеры блока (например, width="300").

3.3. Пример с Imagick

<?php
function resizeWithImagick($srcPath, $dstPath, $maxWidth, $maxHeight)
{
    $img = new Imagick($srcPath);
    $img->setImageOrientation(Imagick::ORIENTATION_TOPLEFT);
    $img->thumbnailImage($maxWidth, $maxHeight, true, true);
    $img->setImageFormat('webp'); // экономим ещё 30‑40%
    $img->writeImage($dstPath);
    $img->clear();
    $img->destroy();
}
?>
  • thumbnailImage автоматически сохраняет пропорции.
  • Формат WebP поддерживается в современных браузерах и в 3 в раз легче, чем JPEG того---

4. Адаптивные изображения в HTML

4.1. srcset и sizes

<img
    src="/upload/resize/300x200_image.webp"
    srcset="
        /upload/resize/300x200_image.webp 300w,
        /upload/resize/600x400_image.webp 600w,
        /upload/resize/1200x800_image.webp 1200w"
    sizes="(max-width: 600px) 100vw, 600px"
    alt="Товар"
    loading="lazy">
  • srcset – браузер выбирает подходящий размер в зависимости от DPR и ширины окна.
  • sizes – указывает, сколько места займет изображение в разных условиях.
  • loading="lazy" – откладывает загрузку до появления в области видимости (экономия трафика).

4.2. Элемент <picture> для разных форматов

<picture>
    <source srcset="/upload/resize/600x400_image.avif" type="image/avif">
    <source srcset="/upload/resize/600x400_image.webp" type="image/webp">
    <img src="/upload/resize/600x400_image.jpg" alt="Товар">
</picture>
  • При поддержке AVIF браузер возьмёт его, иначе WebP, иначе JPEG.

5. Автоматизация в административной панели Битрикса

  1. Создайте обработчик события OnAfterFileSave.
  2. Внутри обработчика вызывайте функцию ресайза, сохраняя несколько вариантов (300, 600, 1200).
  3. Сохраняйте полученные пути в пользовательские свойства файла (CFile::Update).
AddEventHandler("main", "OnAfterFileSave", "ResizeAllVariants");
function ResizeAllVariants($arFields)
{
    $sizes = [300, 600, 1200];
    foreach ($sizes as $w) {
        $dst = '/upload/resize/' . $w . 'x' . $w . '_' . $arFields['NAME'];
        resizeWithImagick($arFields['TMP_NAME'], $_SERVER['DOCUMENT_ROOT'] . $dst, $w, $w);
        // сохраняем путь в массив $arFields['DESCRIPTION'] или в отдельную таблицу
    }
}
  • После этого в шаблонах достаточно брать нужный вариант из srcset.

6. CDN и кэширование

  • CDN (Content Delivery Network) хранит готовые варианты изображений ближе к пользователю, сокращая RTT.
  • При использовании VDSina вы можете подключить их CDN‑сервис: VDSina CDN.
  • Включите Cache‑Control: max‑age=31536000 для статических файлов, чтобы браузер не запрашивал их каждый раз.

7. Проверка эффективности

Инструмент Что измеряет Как использовать
Google PageSpeed Insights LCP, размер изображений Сканируйте страницу, ищите рекомендации «Serve appropriately sized images»
WebPageTest Время до первого байта, размер загрузки Сравните до/после внедрения ресайза
Битрикс‑мониторинг Нагрузка CPU/Memory Смотрите графики в админке → «Отчёты» → «Производительность»

Если после всех правок LCP упал ниже 1,5 сек, а размер страницы сократился минимум на 30 %, значит вы на правильном пути.


8. Частые ошибки и как их избежать

Ошибка Почему происходит Как исправить
Загрузка оригинала + CSS‑масштаб Не указан srcset/sizes Добавьте srcset с реальными размерами
Отсутствие alt Плохой SEO и доступность Всегда задавайте атрибут alt
Сжатие без потери качества Используется только JPEG с 100 % качеством Перейдите на WebP/AVIF с качеством 80‑85 %
Не учитывается DPR На Retina‑экранах изображение выглядит размытым В srcset указывайте варианты 2× и 3×
Кеш не обновляется После изменения изображения браузер показывает старую версию Добавляйте параметр версии ?v=12345 к URL

Практика для закрепления

  1. Анализ: откройте любой товарный лист вашего сайта, нажмите правой кнопкой → «Inspect → Network». Запишите размер файлов изображений (в КБ) и их реальные размеры в CSS.
  2. Код: реализуйте функцию getResizedImage (см. пункт 3.2) и замените в шаблоне все <img src="..."> на вызов этой функции с параметрами 300 × 300. Проверьте, как изменились размеры файлов.
  3. srcset: добавьте к одному из изображений атрибут srcset с тремя вариантами (300, 600, 1200). С помощью инструмента «Responsive Design Mode» в Chrome убедитесь, что браузер подбирает нужный файл.
  4. Lazy‑load: включите loading="lazy" для всех изображений в каталоге. Сравните время первой отрисовки (LCP) до и после.
  5. CDN: если у вас есть доступ к 🏰 VDSina CDN, загрузите туда готовые варианты изображений и замените ссылки в srcset на CDN‑URL. Проверьте, как изменилось время отклика (RTT) в Chrome DevTools → «Timing».

Выполнив упражнения, вы увидите, как каждый из пунктов в реальном времени уменьшает нагрузку на сервер и ускоряет работу сайта.


Помните: правильный размер изображения – это не только «меньше байт», но и «меньше работы для браузера». Оптимизировав процесс уже на сервере, вы даёте пользователю мгновенную реакцию, а поисковикам – более высокий рейтинг. Удачной оптимизации!


CamZamZam - онлайн фото с вебкамеры с эффектами
Cartoon Network: игры с персонажами
Чат рулетка в 2026: будущие функции
Эксперт по доменным стратегическим решениям
Хостинг для e-commerce проектов
Как играть в слоты
Как настроить CDN для сайта на хостинге Host.bg
Как настроить SSL-сертификат для сайта на Host.bg
Как оптимизировать производительность сайта с хостингом Host.bg
Как выбрать правильный хостинг для вашего сайта
Какие бывают ЛОР болезни у детей
Кассовые терминалы с оплатой картами
LOL куклы витрина детская
Лучшие видеорегистраторы для водителей
Онлайн QR-код сканер
Онлайн-связь
Оптимизация производительности баз данных на хостинге Host.bg
Основы настройки веб-хостинга: что вам нужно знать
Партнёрская программа без блога: как получать трафик из Telegram
Профессиональные хитрости для пользователей хостинга Host.bg
Регистрация ИП в Москве для иностранных граждан
Сравнение хостинга Host.bg с другими провайдерами
Субтитры — нет, уши — включены: погружение в английский за 5 минут
Сумки с бусинами
Техника для строительства загородных трасс
ТОП-10 VPS для разработчика: рейтинг серверов под рабочие задачи
WordPress блог для бизнеса
рейтинг хостингов 2026 Быстрые VDS серверы