Перейти к основному содержимому

CDN изображений и видео — zorka.cdn

zorka.cdn — отдельный модуль для «1С-Битрикс: Управление сайтом», версия 0.2.0. Он размещён в этом разделе документации рядом с zorka.chat, но не входит в модуль чата и не нужен для его работы.

Модуль заменяет домен изображений в готовой HTML-странице на выбранный CDN. Например:

/upload/product.jpg?v=4
→ https://by.cdn.zorka.cloud/upload/product.jpg?v=4

Путь, параметры и якорь сохраняются. Исходные файлы, шаблоны и записи в базе не меняются. Получение файлов с сайта и их сжатие выполняет CDN, а не модуль Bitrix.

Установка​

Требуются коробочная «1С-Битрикс: Управление сайтом», PHP 8.1+ и UTF-8. Модуль проверен с PHP 8.3 и ядром main 26.150.0; требования вашей версии самого Bitrix также должны выполняться. Для установки нужен администратор.

  1. В административной панели Битрикса откройте Marketplace → Каталог решений и найдите zorka.cdn.
  2. Установите модуль через Битрикс Маркет и пройдите мастер установки.
  3. Проверьте наличие zorka.cdn в разделе Marketplace → Установленные решения.
  4. Откройте настройки модуля: /bitrix/admin/settings.php?lang=ru&mid=zorka.cdn.
  5. Выберите сайт, проверьте адреса, форматы и исключения. После новой установки подмена выключена.
  6. Убедитесь, что изображение доступно через выбранный CDN по HTTPS, затем включите подмену. При использовании композитного кеша очистите кеш HTML-страниц.

CDN должен отдавать изображения по тем же путям, что и ваш сайт. DNS, TLS и доступ CDN к исходным файлам настраиваются отдельно. Для изображений модуль не загружает файлы в CDN. Видео отправляется отдельным фоновым обработчиком; создание CDN-ресурса и DNS/TLS остаются отдельной настройкой.

Регион для каждого сайта​

РегионАдрес по умолчанию
Беларусь, BYhttps://by.cdn.zorka.cloud
Европа, EUhttps://eu.cdn.zorka.cloud
Россия, RUhttps://ru.cdn.zorka.cloud

Выбор выполняется вручную в настройках сайта. Все посетители выбранного сайта получают изображения с этого адреса. Настройки сайтов независимы. Автоматического выбора по стране посетителя и переключения при отказе нет.

Адреса трёх регионов можно изменить. Указывайте полный HTTPS-адрес без пути, логина и параметров. Наличие региона в форме не означает, что CDN для него уже подключён.

Остальные настройки​

Форматы изображений. По умолчанию: jpg jpeg png webp avif bmp. BMP конвертируется CDN. При обновлении уже установленного модуля добавьте bmp в настройках сайта: сохранённые списки не заменяются автоматически. SVG/ICO/TIFF требуют отдельной поддержки выбранного CDN. Анимированный GIF обрабатывается через видео API — не добавляйте его в список изображений для ImgTune.

Дополнительные домены сайта. По одному домену на строку, без https:// и пути. Текущий домен учитывается автоматически. Например, можно добавить второе имя своего сайта с www. Изображения с чужих доменов не перенаправляются на ваш CDN.

Исключённые пути. Префиксы, по одному на строку, например /upload/private/. Всегда исключены /bitrix/admin/, /bitrix/tools/, /personal/ и /upload/private/. Дополните список всеми закрытыми каталогами проекта: по URL модуль не может определить права пользователя на файл. Изображения, требующие авторизации, должны оставаться вне публичного CDN-кеша.

Какие изображения обрабатываются​

  • Обычные изображения img src, адаптивные srcset и picture.
  • Типовые lazy-load атрибуты: data-src, data-original, data-lazy-src, data-srcset и атрибуты фона.
  • Фоновые изображения в атрибуте style и блоке style на странице.
  • Постеры видео, ссылки на изображения, preload, метаданные изображений для соцсетей, SVG-ссылки — при разрешённом формате.
  • Изображения из кеша ресайза Bitrix, когда их адрес присутствует в HTML.

Относительные и абсолютные адреса своего сайта поддерживаются. Уже подставленный адрес выбранного CDN не меняется повторно. data:, blob:, якоря и PHP-обработчики изображений сохраняются.

Что требует отдельной интеграции​

Модуль 0.2.0 не заменяет все возможные способы загрузки изображений:

  • Внешние CSS-файлы не переписываются. Адреса фонов внутри них нужно адаптировать в шаблоне или сборке CSS.
  • JavaScript и JSON не изменяются. Lazy-load работает, если библиотека использует уже переписанный атрибут; адреса, созданные скриптом позже, требуют изменения компонента.
  • Страницы с тегом base пропускаются целиком. URL без расширения, нестандартные lazy-load атрибуты и специальные CSS-конструкции требуют адаптера.
  • Почта, экспорт, мобильные приложения и композитные AJAX-вставки не считаются проверенными автоматически.

Если CDN недоступен, автоматического возврата к origin нет. Выключите подмену и очистите композитный HTML-кеш. Для выбора региона/настройки URL у модуля нет зависимости от геолокационных сервисов.

Проверка на тестовой галерее​

Подготовлен набор из 9 технических изображений в 7 форматах, около 68 МиБ оригиналов: JPEG, PNG, WebP, AVIF, GIF, BMP и SVG. Есть прозрачный PNG и JPEG 3840 × 2160, оригинал до 17,8 МиБ. PNG/BMP сохранены без сжатия, JPEG — с качеством 100, WebP/AVIF — без потерь. Это тестовая мишень, не фотографии.

На демостранице изображения загружаются при прокрутке, а «Загрузить все примеры» позволяет проверить одновременную загрузку. У карточки есть фактический URL, разрешение, статус и ссылка «Скачать оригинал без CDN».

Показатели «До → После»​

  • До — размер исходного файла.
  • После — размер результата, сообщённый CDN после загрузки изображения.
  • Меньше/больше на …% — процент изменения относительно оригинала и разница в байтах.
  • Формат ответа — фактический формат CDN, например AVIF.
  • Без обработки CDN — файл остался на исходном сайте; подмена для него не выполнялась.
  • Недоступно — получить размер не удалось. Это не нулевой вес и не доказательство, что изображение сломано.

Для измерения делается отдельный запрос только заголовков HEAD; тело изображения повторно не скачивается. Размер относится к самому файлу, а не ко всему сетевому трафику с заголовками и транспортным сжатием. МиБ = 1 048 576 байт, КиБ = 1 024 байта.

Примеры измерений тестового профиля BY от 19 сентября 2026 года:

ИсходникДоПослеИзменение
JPEG 4K17,80 МиБ869 КиБ−95,2%
PNG10,57 МиБ387,2 КиБ−96,4%
BMP10,55 МиБ387,2 КиБ−96,4%
WebP lossless62,6 КиБ62,6 КиБ, WebP0%

Эти результаты относятся к конкретным техническим изображениям и настройкам CDN. Это не обещание одинакового сжатия любых фотографий. Текущий профиль CDN сохраняет меньший исходный WebP, если браузер его принимает. Ранее принудительный AVIF увеличивал этот пример на 519%; это исторический результат. Для других файлов рост всё ещё возможен и показывается явно.

Видео и анимированный GIF​

Начиная с 0.2.0 плагин использует видео API CDN для следующих исходников:

  • MP4 и MOV — варианты с заголовком ftyp;
  • WebM и MKV;
  • AVI;
  • анимированный GIF.

Нужны лицензия CDN Advanced с поддержкой video, включённое видео API и PHP cURL на сайте. Выход — MP4 H.264/AAC, до 1920×1080 и 30 кадров/с. Для GIF сохраняется один цикл движения, прозрачность заменяется белым фоном; повтор включается через loop.

Как включить​

  1. Подготовьте вне корня сайта каталог очереди, доступный пользователю PHP, с правами 0700.
  2. В настройках выбранного сайта включите обработку видео и укажите этот каталог.
  3. Разрешите конкретные публичные каталоги, например /upload/media/. Скрытые файлы и материалы с авторизацией сюда не входят.
  4. Выберите пресет balanced или small, введите серверный токен видео API выбранного HTTPS CDN. Пустое поле сохраняет прежний токен; при смене адреса нужен соответствующий токен.
  5. Настройте запуск обработчика раз в минуту от пользователя сайта. Форма настроек показывает команду с вашим webroot и SITE_ID:
php /path/to/site/local/modules/zorka.cdn/tools/video-worker.php /path/to/site s1

При открытии HTML плагин ставит локальное видео в очередь, а обработчик по cron отправляет его в CDN и получает результат. Открытие страницы не ожидает конвертации. После готовности заменяются video src, source src внутри video и атрибуты data-src/data-lazy-src; тип source становится video/mp4.

Изображения загружаются с домена CDN; готовые MP4 — с домена вашего сайта. Обработку видео выполняет CDN, затем плагин сохраняет результат в /upload/zorka-cdn-video/. Видео API требует токен даже для скачивания; токен остаётся на сервере и не передаётся плееру. Локальная копия сохраняется после истечения срока хранения задачи на CDN.

Для анимированного GIF используйте видеоэлемент:

<video controls loop muted playsinline src="/upload/media/animation.gif"></video>

GIF внутри img не заменяется на MP4. До готовности/при ошибке остаётся исходный адрес; не каждый исходный формат умеет проигрывать браузер. После обработки обновите страницу, а при использовании композитного кеша очистите его. В настройках видны последние задачи и доступна кнопка повтора неудачных.

Лимиты плагина на сайт: исходник 64 МиБ, результат 128 МиБ, до 1000 записей и 2 ГиБ готовых MP4. Ограничения самого CDN могут быть строже. Автоматической очистки результатов нет — опубликованные ссылки могут использоваться страницами. HLS/DASH, потоковое видео и произвольные внешние источники не поддерживаются.

Примеры «До → После»​

В тестовой галерее добавлены шесть движущихся примеров: MP4, MOV, WebM, MKV, AVI и GIF, по 4 секунды, 480×270. У видео есть звук; у GIF его нет. Результаты BY от 19 сентября 2026:

ИсходникДоПосле, MP4Изменение
MP4 lossless1,35 МиБ287,2 КиБ−79,2%
MOV3,85 МиБ274,5 КиБ−93,0%
WebM lossless1,18 МиБ287,3 КиБ−76,3%
MKV lossless1,43 МиБ287,2 КиБ−80,4%
AVI без сжатия35,98 МиБ284,2 КиБ−99,2%
Анимированный GIF990,1 КиБ213,6 КиБ−78,4%

Размер «После» для видео — размер сохранённого готового MP4. Это измерения технической мишени, а не обещание одинаковой экономии для любого ролика. Больший результат также показывается без скрытия роста.

Обновление, выключение и удаление​

Перед обновлением сохраните резервную копию сайта и БД. Откройте Marketplace → Обновление решений, выберите zorka.cdn и установите доступное обновление через Битрикс Маркет. Проверьте версию в списке установленных решений. Если PHP использует OPcache без проверки изменений, обновите его штатными средствами хостинга.

После включения, выключения, смены адреса/региона или удаления очистите композитный HTML-кеш: сохранённые страницы могут выдаваться без PHP и содержать прежние URL. Простое изменение настройки не переписывает такие страницы.

Удаление снимает обработчик подмены, сохраняя настройки. Исходные изображения и контент остаются на сайте. CDN-кеш управляется отдельно. Готовые MP4 и опции видео сохраняются при удалении; при окончательном удалении уберите задание cron вручную.

Если что-то не работает​

ПризнакЧто проверить
Адрес изображения не поменялсяВыбранный сайт, включение, расширение, origin, исключения, тег base и композитный кеш
С CDN изображение не загружаетсяТот же файл на origin, DNS/TLS, HTTP-ответ CDN, поддержка входного формата и лимиты сервиса
Старый регион после переключенияОчистить композитный HTML-кеш и обновить страницу
«После» недоступноHEAD и CORS-заголовки CDN; изображение и измерение проверяются отдельно
После конвертации файл большеСравнить выходной формат и профиль CDN; модуль подмены не выбирает меньший из двух файлов

Проверена доставка через BY. Публичная готовность EU/RU и совместимость с вашим шаблоном требуют отдельной проверки; локальные тесты переключения регионов этого не заменяют.