Налаштування WebP-конвертації зображень в 1С-Бітрікс

Налаштування WebP-конвертації зображень в 1С-Бітрікс Ми не раз стикалися з ситуацією, коли на типовому інтернет-магазині Бітрікс сторінка каталогу завантажує 40–80 зображень. JPEG та PNG важать у сумі 2–5 МБ — це секунди затримки на мобільному з'єднанні. WebP при порівнянній якості дає 25–35% виг
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування WebP-конвертації зображень в 1С-Бітрікс
Простий
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1456
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

Налаштування WebP-конвертації зображень в 1С-Бітрікс

Ми не раз стикалися з ситуацією, коли на типовому інтернет-магазині Бітрікс сторінка каталогу завантажує 40–80 зображень. JPEG та PNG важать у сумі 2–5 МБ — це секунди затримки на мобільному з'єднанні. WebP при порівнянній якості дає 25–35% виграшу за розміром. Проблема в тому, що «ввімкнути WebP» у Бітріксі — не одна кнопка, а зв'язка з кількох механізмів, кожен з яких може мовчки не працювати. Ми допоможемо розібратися та налаштуємо конвертацію під ваш проєкт. Розберемося, через що виникають складнощі та як їх обійти, щоб прискорити завантаження сторінок на 30% без втрати якості. Економія трафіку для каталогу з 1000 товарів по 5 зображень кожен може сягати 150 МБ при кожному завантаженні сторінки, що скорочує витрати на хостинг на 3000–5000 гривень на місяць для магазину з відвідуваністю 5000 унікальних відвідувачів на день.

Чому WebP не вмикається однією кнопкою в Бітріксі?

Ядро використовує модуль main (клас CFile) для зберігання файлів та модуль resize_image для генерації прев'ю. Фізично ресайзер викликається через \Bitrix\Main\Web\Image або через старий API CFile::ResizeImageFile(). Результати кешуються в bitrix/cache/resize_cache/ з хешованими іменами папок.

WebP-конвертація в Бітріксі реалізована двома шляхами:

  • Шлях 1 — серверна конвертація через PHP. Бібліотека GD або Imagick конвертує при ресайзі. Налаштовується в bitrix/php_interface/dbconn.php або через адміністративний інтерфейс у розділі «Продуктивність».
  • Шлях 2 — конвертація на рівні веб-сервера. Nginx/Apache віддає .webp-версію замість оригіналу, якщо браузер підтримує формат (заголовок Accept: image/webp). Файли конвертуються заздалегідь — скриптом або демоном.

Який підхід ефективніше: PHP-конвертація чи Nginx?

Nginx-конвертація в 5 разів знижує навантаження на процесор у порівнянні з PHP при кожному запиті, оскільки статичні файли віддаються напряму. PHP-шлях простіше в налаштуванні, але потребує ресурсів при кожному ресайзі. Рекомендуємо комбінувати: генерувати прев'ю через PHP на льоту для рідко запитуваних зображень, а для популярних — попередньо конвертувати через Nginx.

Параметр PHP (GD/Imagick) Nginx + попередня конвертація
Завантаження CPU При кожному ресайзі Тільки при генерації файлів
Простота налаштування Висока Середня (потребує cron)
Кешування Через resize_cache Статичні файли
Підтримка CDN Потрібен Vary: Accept Простіше (файли на одному сервері)

Як налаштувати серверну конвертацію?

Перевірка GD та Imagick

php -r "echo gd_info()['WebP Support'] ? 'WebP OK' : 'WebP NOT supported';" php -r "echo (new Imagick())->queryFormats('WEBP') ? 'Imagick WebP OK' : 'fail';" 

Якщо GD зібраний без WebP — потрібен libwebp-dev та перезбирання, або перехід на Imagick. На Bitrix VM проблем зазвичай немає — там Imagick з WebP йде з коробки.

Конфігурація в Бітріксі

// bitrix/php_interface/dbconn.php define("BX_USE_MYSQLI", true); define("CACHED_b_file", 3600); // Ввімкнення WebP в модулі resize \Bitrix\Main\Config\Option::set('main', 'use_webp', 'Y'); \Bitrix\Main\Config\Option::set('main', 'webp_quality', '85'); 

Після цього \Bitrix\Main\Web\Image::resize() повертатиме .webp якщо клієнт підтримує формат. Перевірити можна в таблиці b_file — поле CONTENT_TYPE у нових прев'ю має бути image/webp.

Рекомендовані параметри WebP

Параметр Оптимальне значення
Якість 85 (баланс розміру та якості)
Lossless Вимкнути (крім PNG з прозорістю)
Метод стиснення 6 (максимальне стиснення)

Конвертація на рівні Nginx

Це продуктивніше: PHP не витрачає CPU на конвертацію в момент запиту. Схема: при першому запиті генеруємо .webp-версію поруч з оригіналом, Nginx перевіряє її наявність і віддає якщо браузер підтримує.

map $http_accept $webp_suffix { default ""; "~*webp" ".webp"; } server { location ~* ^/upload/.*\.(png|jpg|jpeg)$ { add_header Vary Accept; try_files $uri$webp_suffix $uri =404; } } 

Попередня конвертація скриптом cwebp:

find /var/www/bitrix/upload -name "*.jpg" -o -name "*.png" | \ xargs -P4 -I{} sh -c 'cwebp -q 82 "$1" -o "$1.webp" 2>/dev/null' _ {} 

Запускати через cron раз на годину для нових файлів — за датою зміни через find -newer.

Як очистити кеш прев'ю після ввімкнення WebP?

Після ввімкнення WebP старі прев'ю в bitrix/cache/resize_cache/ залишаються в JPEG/PNG. Потрібно їх видалити:

rm -rf /var/www/bitrix/bitrix/cache/resize_cache/* 

Або через адміністративну панель: «Управління сайтом» → «Продуктивність» → «Очистити кеш». Після цього прев'ю регенеруються при першому зверненні — можна прогріти curl-скриптом по sitemap.

Типові проблеми та їх вирішення

WebP генерується, але браузер отримує JPEG. Найчастіше Nginx не передає заголовок Vary: Accept — CDN або кешуючий проксі віддає закешовану версію без урахування типу браузера. Розмір WebP може бути більшим за оригінал на дрібних іконках (до 10×10 px) та PNG з малою кількістю кольорів. Варто додати перевірку: якщо WebP більше оригіналу на 10%, віддавати оригінал. Помилки в b_event_log виникають при ввімкненій конвертації та відсутності прав на запис в upload/. Перевірити chown на директорію upload/ від імені користувача веб-сервера.

Що входить в роботу з налаштування WebP?

В рамках послуги ми виконуємо:

  • Аудит поточної конфігурації сервера та Бітрікса.
  • Налаштування GD/Imagick або Nginx для конвертації.
  • Створення скрипта для попередньої конвертації та налаштування cron.
  • Тестування на стенді та бойовому сервері.
  • Документацію з експлуатації та підтримку після впровадження.

Ми займаємося розробкою на Бітрікс понад 8 років та реалізували понад 120 проєктів з оптимізації продуктивності. Якщо ви хочете прискорити завантаження вашого сайту та скоротити витрати на трафік, отримайте консультацію з налаштування WebP — ми оцінимо ваш проєкт і запропонуємо оптимальне рішення.

WebP — Wikipedia