CDN разгружает основной сервер и сокращает время отдачи статики за счёт раздачи файлов с ближайших к пользователю узлов. На 1С-Битрикс подключить сеть доставки можно штатным модулем или сторонним сервисом — разберём оба пути, настройки кэша и типичные ошибки.
Что даёт CDN интернет-магазину на Битрикс
CDN (Content Delivery Network) — распределённая сеть серверов, которая кэширует и отдаёт статические файлы сайта: изображения, CSS, JS, шрифты, видео. Пользователь получает контент с географически ближайшего узла, а не с вашего единственного сервера в одном дата-центре.
Для каталога с сотнями фотографий товаров это даёт три ощутимых эффекта:
- Меньше задержка (latency) — картинки грузятся с узла в регионе клиента, а не через полстраны;
- Разгрузка бэкенда — веб-сервер (Apache/Nginx) перестаёт тратить процессы и трафик на отдачу тяжёлой статики и занимается только PHP;
- Параллелизм загрузки — статика идёт с отдельного домена CDN, браузер открывает больше одновременных соединений.
Штатный модуль BitrixCDN
В коммерческих редакциях (начиная с «Стандарт» и в облачном Битрикс24) доступен модуль cdn — BitrixCDN. Это готовая сеть на инфраструктуре партнёров, включается почти в один клик и не требует отдельного договора со сторонним провайдером.
Путь включения: Настройки → Настройки продукта → CDN (Ускорение сайта) или через /bitrix/admin/cdn_edit.php. Здесь вы:
- Активируете использование CDN галочкой «Использовать CDN»;
- Выбираете типы ускоряемого контента — изображения, CSS, JS;
- Указываете, ускорять ли статику ядра
/bitrix/и пользовательские файлы из/upload/.
Битрикс автоматически подменяет пути к файлам в HTML на домен CDN — вручную переписывать ссылки в шаблоне не нужно. Работает это через обработчик, который на выдаче страницы заменяет локальные URL статики на адреса узлов сети.
Подключение стороннего CDN (Cloudflare, Selectel, G-Core и др.)
Если BitrixCDN не подходит по цене или географии, подключают внешний сервис. Есть два принципиально разных подхода:
| Схема | Как работает | Когда выбирать |
|---|---|---|
| Reverse proxy (весь домен) | DNS сайта указывает на CDN, тот проксирует все запросы и кэширует статику по заголовкам | Cloudflare, нужен полный CDN + защита |
| Pull-zone (поддомен статики) | Создаётся зона, привязанная к origin; статику отдают через отдельный хост вида cdn.site.ru | G-Core, Selectel, BunnyCDN, нужен контроль путей |
Для pull-zone на Битрикс удобно задать домен статики константой в /bitrix/php_interface/init.php или использовать настройку BX_IMG_SERVER / собственную функцию подмены путей в шаблоне. При схеме reverse proxy код сайта вообще не трогают — важно лишь корректно настроить кэш-заголовки на Nginx.
Ключевой момент — правильные заголовки для origin, чтобы CDN понимал, что и на сколько кэшировать:
Cache-Control: public, max-age=2592000для картинок и шрифтов;Cache-Control: public, max-age=31536000, immutableдля версионированной статики ядра;- исключить из кэша
/bitrix/admin/,/bitrix/tools/и любые URL с сессией.
Настройка отдачи статики и заголовков на Nginx
Даже с CDN настройка origin остаётся на вас: узлы сети берут файл именно с вашего сервера и следуют его заголовкам. Типичный блок в конфиге Nginx для магазина на Битрикс:
- Отдавать статику напрямую, минуя PHP:
location ~* \.(css|js|jpg|jpeg|png|webp|gif|svg|woff2?|ico)$; - Проставлять срок жизни:
expires 30d;иadd_header Cache-Control "public";; - Включить
gzip/brotli— CDN закэширует уже сжатую версию; - Разрешить CORS для шрифтов при раздаче с поддомена:
add_header Access-Control-Allow-Origin "*";.
Заголовок CORS критичен: если шрифты и SVG отдаются с cdn.site.ru, а страница — с основного домена, без Access-Control-Allow-Origin браузер заблокирует загрузку и иконочные шрифты «поедут».
curl -I https://cdn.site.ru/upload/file.jpg — смотрите на Cache-Control, Age и заголовок вида X-Cache: HIT от провайдера.Кэш, версионирование и сброс на CDN
Главная боль CDN — устаревший кэш. Обновили логотип или CSS, а часть пользователей видит старую версию, потому что узел ещё отдаёт закэшированный файл. Решают это двумя способами:
- Версионирование по имени/параметру. Битрикс сам добавляет к CSS/JS метку версии (
?1710000000) при включённой оптимизации — новый URL считается новым файлом и кэшируется заново. Для картинок применяют суффикс версии в имени. - Ручной сброс (purge). В панели провайдера или через его API инвалидируют конкретный путь либо всю зону. У Cloudflare — «Purge Cache», у BunnyCDN и G-Core — вызов purge-эндпоинта.
Для объединённых CSS/JS Битрикса это работает автоматически: при каждой пересборке файл /bitrix/cache/css/... получает новое имя, и CDN тянет свежую версию без ручного purge. Поэтому связка «объединение статики + CDN» удобнее, чем раздача десятков отдельных файлов.
/bitrix/services/, AJAX-обработчики компонентов и страницы с корзиной — иначе пользователь увидит чужой или устаревший ответ.Изображения товаров: где CDN даёт максимум
В интернет-магазине статика — это в первую очередь фотографии каталога. Их и стоит выносить на CDN в первую очередь. Максимальный эффект достигается в связке с оптимизацией самих файлов:
- отдавать WebP/AVIF вместо JPEG — многие CDN умеют конвертировать «на лету» и кэшировать результат;
- генерировать нужные размеры превью средствами Битрикс (
CFile::ResizeImageGet) и раздавать уже готовые ресайзы; - включить lazyload, чтобы CDN запрашивался только для видимых изображений.
Тяжёлые оригиналы 4000×3000 без ресайза сведут выигрыш от CDN к нулю: сеть быстро отдаст файл, но браузер всё равно будет долго его декодировать. Поэтому CDN — часть комплексной работы с медиа, а не самостоятельное решение.
Как проверить, что CDN действительно работает
После подключения важно убедиться, что статика реально идёт через сеть, а не с origin. Простые проверки:
- Откройте DevTools → Network, обновите страницу и посмотрите, с какого домена грузятся картинки и CSS — должен быть хост CDN, а не основной домен;
- Проверьте заголовки ответа: наличие
X-Cache: HIT,CF-Cache-Status: HITилиAgeбольше нуля говорит о попадании в кэш узла; - Прогоните сайт через PageSpeed Insights и WebPageTest из разных регионов — время до первого байта статики должно упасть;
- Сравните нагрузку на сервере: после переноса статики падает исходящий трафик и число запросов к Nginx.
Если статика упорно идёт с origin — проверьте, что модуль CDN включён для нужных типов контента, а в HTML пути действительно подменяются на домен сети.
Итог
CDN на Битрикс — недорогой способ ускорить отдачу изображений, CSS и JS и снять нагрузку с сервера. Штатный BitrixCDN включается парой галочек и подходит большинству магазинов; сторонние сети (Cloudflare, G-Core, Selectel, BunnyCDN) дают больше контроля и гибкости по цене. Главное — корректные кэш-заголовки на origin, версионирование статики и аккуратная инвалидация, чтобы пользователи не видели устаревшие файлы.
Максимальный эффект CDN приносит в паре с оптимизацией картинок, объединением статики и композитом — это единый комплекс работ по ускорению. Если нужно выжать из каталога и корзины стабильные Core Web Vitals, мы настраиваем CDN, кэш и композит под вашу нагрузку в рамках услуги ускорения и сопровождения.
Частые вопросы
Нужен ли CDN, если сайт и так быстрый?
Если аудитория в одном регионе и сервер справляется, выигрыш будет небольшим. CDN сильнее всего помогает при географически распределённой аудитории и тяжёлом каталоге изображений.
BitrixCDN платный?
Да, он тарифицируется по объёму переданного трафика и работает только при активной лицензии с подпиской на обновления. При истечении подписки отдача через CDN отключается.
Можно ли подключить бесплатный Cloudflare?
Да, бесплатного тарифа Cloudflare достаточно для кэширования статики и базовой защиты. Нужно правильно настроить кэш-заголовки на Nginx и исключить из кэша админку и динамические URL.
CDN ускорит генерацию страниц PHP?
Нет, CDN работает только со статикой. За скорость PHP отвечают кэширование компонентов, композит и оптимизация запросов к базе данных.
Почему после обновления файла пользователи видят старую версию?
Узел CDN отдаёт закэшированную копию до истечения срока жизни. Проблему решают версионированием имени файла или ручным сбросом кэша (purge) в панели или через API провайдера.
Что делать, если шрифты не загружаются с поддомена CDN?
Это блокировка из-за CORS. Нужно добавить на отдачу шрифтов заголовок Access-Control-Allow-Origin, иначе браузер откажется загружать файлы с другого домена.
Как понять, что статика реально идёт через CDN?
Откройте DevTools → Network и проверьте домен, с которого грузятся картинки и CSS, а также заголовки ответа вида X-Cache: HIT или CF-Cache-Status: HIT.
Стоит ли выносить на CDN всю статику ядра /bitrix/?
Да, файлы ядра и объединённые CSS/JS хорошо кэшируются и почти не меняются между обновлениями. Исключите только админские разделы и любые URL, зависящие от сессии.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.