Настройка Cloudflare CDN для 1С-Битрикс
Сайт на Битрикс отдаёт статику (JS, CSS, изображения) с того же сервера, что и PHP. При нагрузке свыше 50–100 RPS сервер начинает захлёбываться — не потому что PHP медленный, а потому что Nginx занят раздачей файлов. Cloudflare CDN снимает эту нагрузку: статика раздаётся с ближайшего edge-сервера, а origin обрабатывает только динамику.
Что кэшировать, а что нет
Cloudflare по умолчанию кэширует файлы по расширению: .js, .css, .jpg, .png, .woff2, .svg и другие. HTML и PHP не кэшируются. Для Битрикс это правильное поведение — динамические страницы должны генерироваться на сервере.
Исключения, которые нужно настроить через Page Rules или Cache Rules:
-
/upload/resize_cache/— кэшировать. Это ресайзы изображений, они не меняются после генерации. -
/bitrix/cache/— не кэшировать. Внутренний кэш Битрикс, не предназначен для CDN. -
/bitrix/admin/*— bypass. Административная панель не должна кэшироваться. -
/personal/*,/auth/*— bypass. Личный кабинет, формы авторизации.
Настройка заголовков кэширования
Битрикс по умолчанию не выставляет оптимальные Cache-Control для статики. Nginx обычно настроен с expires 30d для /upload/ и /bitrix/images/. Cloudflare уважает эти заголовки — если сервер отдаёт Cache-Control: max-age=2592000, Cloudflare закэширует файл на 30 дней.
Проверьте конфигурацию Nginx:
location ~* \.(js|css|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
Директива immutable сообщает браузеру, что файл не изменится — браузер не будет отправлять conditional request (If-Modified-Since). Для Битрикс это корректно, потому что Vite/webpack добавляет хэш в имя файла при каждой сборке.
Browser Cache TTL и Edge Cache TTL
Browser Cache TTL — сколько браузер хранит файл локально. Устанавливается в Cloudflare Dashboard → Caching → Browser Cache TTL. Рекомендация: «Respect Existing Headers» — пусть Nginx управляет.
Edge Cache TTL — сколько Cloudflare хранит файл на своих серверах. По умолчанию определяется заголовками origin-сервера. Через Page Rules можно переопределить: для /upload/ задайте Edge Cache TTL = 1 month.
Минификация и оптимизация
Cloudflare предлагает Auto Minify для JS, CSS и HTML. Для Битрикс отключите минификацию HTML — она может сломать вставки <script> в компонентах и инлайновые стили. JS и CSS минификацию можно оставить, но если вы уже минифицируете на этапе сборки (Vite, webpack) — Cloudflare minify не даст выигрыша и только добавит задержку на edge.
Polish (оптимизация изображений) — включайте. Сжимает JPEG и PNG без потери качества (lossy/lossless). Для каталогов с тысячами товарных фотографий экономия трафика достигает 20–30%.
Brotli-сжатие — включайте. Cloudflare сжимает текстовые ответы (HTML, JS, CSS) алгоритмом Brotli, который эффективнее gzip на 15–20%.
Проверка работы CDN
После настройки проверьте заголовки ответа для статического файла:
-
cf-cache-status: HIT— файл отдан из кэша Cloudflare. -
cf-cache-status: MISS— файл запрошен с origin (первый запрос или кэш истёк). -
cf-cache-status: DYNAMIC— Cloudflare не кэширует этот ресурс (HTML, PHP).
Если видите DYNAMIC для .js или .css — проверьте, не выставляет ли origin заголовок Cache-Control: no-store или Set-Cookie. Cloudflare не кэширует ответы с Set-Cookie, а Битрикс может выставлять cookie сессии на любой запрос. Убедитесь, что для статики Nginx обрабатывает запрос напрямую, без передачи в PHP.







