Налаштування автоматичної оптимізації медіафайлів 1С-Бітрікс
Автоматична оптимізація медіафайлів 1С-Бітрікс включає стиснення зображень, конвертацію в WebP, lazy loading та ресайз. Сторінка каталогу завантажує 40 зображень товарів сумарною вагою 8 МБ. Google PageSpeed фіксує помилки: «Використовуйте зображення в сучасних форматах» та «Правильно задайте розмір зображень». Бітрікс зберігає оригінали в /upload/ і створює ресайзи через CFile::ResizeImageGet() — але формат залишається JPEG/PNG, без автоматичної конвертації в WebP. Результат — повільне завантаження та втрачені позиції у видачі. Неоптимізовані зображення — зайві 50–100 КБ трафіку на кожне. На сторінці з 40 товарами це 2–4 МБ лише на картинках. Пошукові системи враховують швидкість, особливо на мобільних пристроях: повільний сайт втрачає до 20% конверсії. Комплексна оптимізація — стиснення без втрат, WebP, lazy loading — скорочує вагу сторінки в 2–3 рази та підвищує позиції. Середня економія на трафіку при 100 000 переглядів на місяць — до 500 ГБ, що зменшує витрати на хостинг до 30%. Компанія на ринку понад 7 років, реалізувала 50+ проєктів з оптимізації. WebP перевершує JPEG на 25-35% за стисненням (у 1.25-1.35 рази), а lazy loading прискорює завантаження сторінки в 1.5-2 рази.
Ми налаштовуємо багаторівневу оптимізацію під ключ: ресайз, стиснення, WebP, lazy loading та віддачу через CDN. Досвід більше 7 років у розробці на Бітрікс дозволяє гарантувати результат. Ми вже оптимізували зображення для 50+ проєктів, досягнувши покращення PageSpeed на 20+ балів. Наприклад, на одному з проєктів з каталогом 4000 товарів ми зменшили середній розмір сторінки з 5 МБ до 1.8 МБ, а PageSpeed покращився з 54 до 82 балів. Оцініть ваш проєкт — зв'яжіться для безкоштовного аудиту швидкості.
Вплив оптимізації зображень на продуктивність Бітрікс
Кожне неоптимізоване зображення — це зайві 50–100 КБ трафіку. На сторінці каталогу з 40 товарами це 2–4 МБ лише на картинках. Пошукові системи враховують швидкість завантаження, особливо на мобільних пристроях. Повільний сайт втрачає до 20% конверсії. Комплексна оптимізація — стиснення без втрат, WebP, lazy loading — скорочує вагу сторінки в 2–3 рази та піднімає позиції у видачі.
Покроковий план налаштування автоматичної оптимізації
-
Аудит поточного стану: замір PageSpeed, аналіз структури файлів в
/upload/, оцінка об'єму та форматів. - Стиснення при завантаженні: реалізація обробника
OnAfterFileSaveз викликомImageOptimizer::compress(). Обмеження сторони до 2000px, якість 85% JPEG / 9 PNG, видалення EXIF. - WebP-конвертація: встановлення обробника
OnAfterGetResizeImagePathдля генерації WebP-копій. Налаштування Nginx для віддачі WebP заAccept. - Lazy loading та srcset: доопрацювання шаблонів компонентів каталогу — додавання
loading="lazy",srcsetдля адаптивних роздільних здатностей. - Масова обробка існуючих файлів: запуск агента на 100 файлів за крок.
- Тестування та моніторинг: повторний замір PageSpeed, перевірка віддачі WebP, сумісність з кешем.
Рівень 1: ресайз та стиснення при завантаженні
Стандартний CFile::ResizeImageGet() створює ресайз при першому запиті та кешує результат в /upload/resize_cache/. Основна проблема — оригінали зберігаються без стиснення, і менеджери завантажують фотографії з телефона розміром 5–10 МБ. Ми додаємо обробник події OnAfterFileSave, який стискає файл одразу після завантаження.
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'main',
'OnAfterFileSave',
function (\Bitrix\Main\Event $event) {
$file = $event->getParameter('FILE');
if (!in_array($file['CONTENT_TYPE'], ['image/jpeg', 'image/png', 'image/gif'])) {
return;
}
$path = $_SERVER['DOCUMENT_ROOT'] . $file['SRC'];
if (!file_exists($path)) {
return;
}
\Local\Media\ImageOptimizer::compress($path, $file['CONTENT_TYPE']);
}
);
Клас ImageOptimizer використовує Imagick при його наявності, інакше GD. Він видаляє EXIF, обмежує максимальну сторону до 2000px та виставляє якість 85% для JPEG або рівень стиснення 9 для PNG. Після цього оригінал займає в середньому 30% від вихідного об'єму. Якщо потрібно обробити вже завантажені файли, запускається масовий агент, який перебирає по 100 файлів за крок.
Як налаштувати WebP-конвертацію в Бітрікс?
WebP дає 25–35% виграш у розмірі порівняно з JPEG при співставній якості. Браузерна підтримка — 97%+ (всі сучасні). Стратегія: генеруємо WebP-версію поруч з оригіналом через подію OnAfterGetResizeImagePath, потім nginx віддає WebP браузерам, що підтримують формат.
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'main',
'OnAfterGetResizeImagePath',
function (\Bitrix\Main\Event $event) {
$result = $event->getParameter('RESULT');
$src = $result['src'] ?? '';
if (!$src || !preg_match('/\.(jpg|jpeg|png)$/i', $src)) {
return;
}
$localPath = $_SERVER['DOCUMENT_ROOT'] . $src;
$webpPath = preg_replace('/\.(jpg|jpeg|png)$/i', '.webp', $localPath);
if (!file_exists($webpPath) && file_exists($localPath)) {
\Local\Media\WebpConverter::convert($localPath, $webpPath);
}
}
);
Приклад конфігурації Nginx
map $http_accept $webp_suffix {
default "";
"~*webp" ".webp";
}
server {
location ~* ^(/upload/resize_cache/.+)\.(jpg|jpeg|png)$ {
set $img_path $1.$2;
set $webp_path $1.webp;
if ($webp_suffix = ".webp") {
add_header Vary Accept;
try_files $webp_path $img_path =404;
}
try_files $img_path =404;
expires 30d;
add_header Cache-Control "public, immutable";
}
}
Чому lazy loading критичний для SEO?
Lazy loading відкладає завантаження зображень за межами екрану, скорочуючи час до інтерактивності. В шаблоні компонента каталогу додаємо loading="lazy" та srcset для адаптивних роздільних здатностей.
<?php
$img = \CFile::ResizeImageGet($element['PREVIEW_PICTURE'], ['width' => 300, 'height' => 300]);
$img2 = \CFile::ResizeImageGet($element['PREVIEW_PICTURE'], ['width' => 600, 'height' => 600]);
?>
<img
src="<?= htmlspecialchars($img['src']) ?>"
srcset="<?= htmlspecialchars($img['src']) ?> 300w, <?= htmlspecialchars($img2['src']) ?> 600w"
sizes="(max-width: 768px) 300px, 600px"
loading="lazy"
width="300"
height="300"
alt="Автоматичне стиснення та WebP для 1С-Бітрікс"
>
Порівняння форматів зображень
| Формат | Стиснення | Якість | Підтримка | Розмір файлу |
|---|---|---|---|---|
| JPEG | Втрати | Добре | 100% | 100% (база) |
| PNG | Без втрат | Відмінна | 100% | 200%+ (більше) |
| WebP | Втрати/без втрат | Порівнянна з JPEG | 97% | 70-75% від JPEG |
| AVIF | Втрати/без втрат | Краща | 90%+ | 50-60% від JPEG |
Автоматична конвертація в WebP — оптимальний баланс сумісності та виграшу у вазі. Ми використовуємо якість 82% (візуально без втрат). WebP використовує квантування та предиктивне кодування для кращого стиснення порівняно з JPEG.
Типові проблеми при оптимізації
| Проблема | Причина | Рішення |
|---|---|---|
| WebP не віддається | Відсутня перевірка Accept або неправильний location nginx | Налаштувати map та location як у прикладі вище |
| Зникають EXIF-дані | Стриппінг метаданих при стисненні | При необхідності зберегти — відключити stripImage() |
| Lazy loading ламає верстку | Не вказані атрибути width/height | Додати їх явно в тег img |
Що входить у налаштування оптимізації медіафайлів
- Стиснення при завантаженні: обробник OnAfterFileSave, видалення EXIF, ресайз до 2000px, якість 85% JPEG / 9 PNG.
- WebP-конвертація: подія OnAfterGetResizeImagePath + конфігурація Nginx для віддачі WebP.
- Lazy loading та srcset: доопрацювання шаблонів компонентів каталогу.
- Масова оптимізація існуючих файлів: агент з кроком 100 файлів.
- Тестування: замір PageSpeed, перевірка віддачі WebP, сумісність з кешем.
- Документація: опис всіх змін, налаштування для підтримки.
Орієнтовні терміни
- Базовий пакет (стиснення + WebP + lazy loading) — 1–2 робочі дні.
- Масова оптимізація існуючих файлів — додатково 4–8 годин.
- Інтеграція з CDN або додатковими форматами (AVIF) — обговорюється окремо.
- Вартість базового пакету — від 5000 грн.
Ми гарантуємо виконання робіт в обумовлені терміни. Замовте налаштування — ми оцінимо ваш проєкт безкоштовно та запропонуємо оптимальне рішення. Зв'яжіться з нами для консультації та отримайте економію трафіку до 60%.







