Представьте: в каталоге интернет-магазина на 1С-Битрикс 10 000 товаров. Каждый товар — изображение 4000×3000 пикселей весом 8 МБ. Без ресайза эти файлы отдаются полностью на любой запрос. Браузер масштабирует их через CSS, а вы платите за лишние гигабайты трафика и теряете посетителей из-за медленной загрузки. Core Web Vitals падают. А ресайзер Битрикса по умолчанию настроен далеко не оптимально — качество 85, GD, без предгенерации. Мы решаем эту проблему комплексно: подбираем библиотеку, выставляем параметры, настраиваем кеширование и предгенерацию. В результате вы экономите от 15 000 до 40 000 рублей в месяц на трафике для каталога на 10 000 товаров.
Почему ресайз по умолчанию не работает?
Встроенный механизм ресайза Битрикса использует два API: старый CFile::ResizeImageFile() из модуля main (через GD) и новый \Bitrix\Main\Web\Image (GD или Imagick). Оба кешируют результат в bitrix/cache/resize_cache/. Однако часто параметры компонентов (например, DETAIL_IMAGE_WIDTH в bitrix:catalog.element) установлены в 0 — ресайз не происходит, отдаётся оригинал. Даже если параметры заданы, по умолчанию включён GD с качеством 85, что для больших каталогов медленно и неоптимально.
Как выбрать между GD и Imagick?
| Параметр | GD | Imagick |
|---|---|---|
| Скорость на больших файлах | Медленно | Быстро (CPU/SSE) |
| Качество при уменьшении | Посредственное | Высокое (фильтры Lanczos) |
| Поддержка форматов | JPEG, PNG, GIF | + WebP, TIFF, PSD, RAW |
| Потребление памяти | ~128 МБ на 30 МП | ~256 МБ на 30 МП |
| Установка | Встроен в PHP | Требуется php-imagick |
Imagick работает быстрее и качественнее. Переключить можно одной строкой или через админ-панель:
\Bitrix\Main\Config\Option::set('main', 'image_handler', 'imagick');
Проверить установку: php -r "echo extension_loaded('imagick') ? 'Imagick OK' : 'No Imagick';". На Bitrix VM Imagick есть, на чистом PHP-FPM — apt install php-imagick или yum install php-imagick. Подробнее о преимуществах Imagick можно узнать на Wikipedia.
Настройка качества и алгоритма
\Bitrix\Main\Config\Option::set('main', 'image_resize_quality', '82');
\Bitrix\Main\Config\Option::set('main', 'image_resize_png_quality', '7');
82 для JPEG — компромисс между размером и качеством. Для PNG 7 из 9.
Режимы ресайза и их применение
| Константа | Поведение | Применение |
|---|---|---|
BX_RESIZE_IMAGE_EXACT |
Точные размеры с обрезкой | Иконки, аватарки |
BX_RESIZE_IMAGE_PROPORTIONAL |
Пропорционально, вписывается | Карточки товаров |
BX_RESIZE_IMAGE_PROPORTIONAL_ALT |
Пропорционально без полей | Слайдеры, баннеры |
В шаблоне компонента:
$arFile = CFile::ResizeImageGet(
$arResult['DETAIL_PICTURE'],
['width' => 800, 'height' => 600],
BX_RESIZE_IMAGE_PROPORTIONAL,
false
);
Когда нужна предгенерация превью?
При первом входе пользователя ресайз выполняется на лету — это нагрузка на CPU и задержка. Предгенерация через обработчик события OnAfterFileAdd создаёт превью сразу после загрузки файла:
AddEventHandler('main', 'OnAfterFileAdd', function($arFields) {
if (in_array($arFields['CONTENT_TYPE'], ['image/jpeg', 'image/png'])) {
CFile::ResizeImageGet($arFields['ID'], ['width' => 1200, 'height' => 900], BX_RESIZE_IMAGE_PROPORTIONAL);
CFile::ResizeImageGet($arFields['ID'], ['width' => 400, 'height' => 300], BX_RESIZE_IMAGE_PROPORTIONAL);
}
});
Лимиты и очистка кеша
Ресайз 30+ МП требует memory_limit = 256M, max_execution_time = 60. Для Imagick добавьте imagick.skip_secure_multithreaded_extensions = 0.
Кеш превью не очищается автоматически при замене файла. Безопасная очистка по дате:
// удаление кеша старше 30 дней
BXClearCache(true, '/');
Альтернатива — скрипт через find, но мы предпочитаем программный подход.
Как мы настраиваем ресайз: процесс и кейс
Наш типовой проект — интернет-магазин с 50 000 товаров. Исходно: GD, качество 85, без предгенерации, время загрузки страницы каталога 8 секунд. Мы выполнили:
- Аудит текущих настроек —
memory_limit, драйвер, параметры компонентов. - Включили Imagick, выставили качество 82.
- Написали обработчик предгенерации для новых файлов.
- Обновили шаблоны компонентов — указали правильные размеры и режимы.
- Настроили агента для очистки устаревшего кеша раз в неделю.
- Протестировали — время загрузки упало до 2.5 секунд, трафик уменьшился на 65%.
Что входит в работу
- Аудит текущей конфигурации Битрикса и сервера.
- Выбор и активация оптимального драйвера (GD/Imagick).
- Настройка качества, режимов ресайза для всех компонентов.
- Разработка и внедрение предгенерации превью.
- Оптимизация параметров PHP (memory_limit, max_execution_time).
- Настройка автоматической очистки кеша.
- Документация по внесённым изменениям.
- Гарантия 12 месяцев на настройки.
Сроки и стоимость
Ориентировочный срок — от 2 до 5 рабочих дней в зависимости от объёма каталога и сложности шаблонов. Стоимость рассчитывается индивидуально после аудита. Получите консультацию — напишите нам, оценим проект.
Частые ошибки при самостоятельной настройке
- Установка
memory_limitниже 128 МБ — ресайз падает с белым экраном. - Игнорирование параметров компонентов — ресайз не срабатывает, отдаётся оригинал.
- Использование GD при наличии Imagick — лишняя нагрузка.
- Отсутствие предгенерации — медленная загрузка первых посетителей.
- Неочищенный кеш после замены изображений — пользователи видят старые картинки.
Наш опыт 10+ лет и более 500 проектов на Битриксе гарантируют, что после настройки ресайза ваш магазин будет работать быстрее, а Core Web Vitals — в зелёной зоне. Закажите аудит и настройку прямо сейчас. Рекомендации по оптимизации изображений также описаны в документации Google PageSpeed Insights.







