Оптимальные настройки CDN для WordPress

o

1. Выбор протокола передачи данных: HTTP/2 vs HTTP/3 для WordPress

Для современных сайтов на WordPress критически важно использовать HTTP/2 или HTTP/3. HTTP/2 позволяет мультиплексировать запросы, что снижает задержки при загрузке нескольких файлов (CSS, JS, шрифты) одновременно. Конкретные параметры: включите HTTP/2 на уровне CDN — это дает прирост скорости загрузки первой страницы на 15-30% в зависимости от количества запросов.

HTTP/3 (на базе QUIC) использует протокол UDP вместо TCP, что значительно уменьшает время установки соединения (дополнительная экономия 100-300 мс на первый запрос). Для WordPress это особенно актуально для мобильных пользователей с нестабильным соединением. Выбирайте CDN, который поддерживает HTTP/3 на всех edge-серверах: Cloudflare (включен по умолчанию), KeyCDN (требует ручного включения в настройках), BunnyCDN (автоматически).

Практический шаг: в панели CDN найдите раздел "Protocol" и установите значение "HTTPS only" или "Redirect to HTTPS". Это гарантирует, что все запросы будут обрабатываться через защищенные протоколы, поддерживающие H2 и H3. Для WordPress также обязательно включите поддержку ALPN (Application-Layer Protocol Negotiation) на сервере источника.

2. Фильтрация и кэширование статических ресурсов: точные заголовки Cache-Control

Для WordPress критично правильно настроить TTL (Time To Live) для статики: изображений, CSS, JS. Установите для типов файлов .jpg, .png, .webp, .svg, .css, .js значение Cache-Control: max-age=31536000 (1 год). Это уменьшает количество обращений к серверу источника на 60-80% для повторных визитов.

Важно: для динамических страниц (категории, отдельные записи) используйте разный подход. Для страниц с HTML-кэшированием (например, через плагин WP Rocket или Litespeed Cache) установите max-age=3600 секунд (1 час) с проверкой через ETag или Last-Modified. Конкретная настройка: в CDN добавьте правило для Content-Type: text/html с значением s-maxage=3600, stale-while-revalidate=86400. Это позволяет CDN отдавать устаревший кэш во время фонового обновления.

Практический пример для BunnyCDN: создайте Pull Zone, включите "Enable Logging" (для отладки), в "Cache-Control" укажите пользовательские заголовки. Для статики: "Cache-Control: public, immutable, max-age=31536000". Для HTML: "Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400". В Cloudflare используйте Page Rules: для *wp-content/uploads* — Cache Level: Standard, Edge Cache TTL: 1 месяц.

3. Сжатие и оптимизация изображений: форматы WebP и AVIF на уровне CDN

Для WordPress изображения составляют 70-80% веса страницы. Используйте CDN для автоматического преобразования в WebP и AVIF. Настройка: в панели CDN (Cloudflare — Polish, KeyCDN — Image Processing, BunnyCDN — Optimizer) включите перекодировку с качеством 80% для WebP и 70% для AVIF. Это снижает объем изображений на 30-50% без потери визуального качества.

Техническая спецификация: AVIF поддерживает глубокий цвет (HDR) и сжатие без потерь для некоторых элементов. Однако не все браузеры его поддерживают. Поэтому настройте CDN на доставку AVIF только если заголовок Accept содержит image/avif. В Cloudflare это делается через "Image Resizing" — создайте правило: для /wp-content/uploads/ добавить параметр format=auto,quality=80. Это позволяет CDN выбирать между JPEG, WebP и AVIF в зависимости от браузера.

Практический шаг: проверьте, поддерживает ли ваш CDN "Client Hints" (DPR, Viewport-Width). Включите отправку этих заголовков с вашего WordPress-сайта (через functions.php: add_filter('wp_headers', function($headers) { $headers['Accept-CH'] = 'DPR, Viewport-Width'; return $headers; });). Это позволит CDN ресайзить изображения под конкретный экран устройства — экономия до 40% трафика.

4. Безопасность и защита источника: подмена IP, SSL/TLS и правила WAF

После подключения CDN критически настроить политики безопасности, чтобы источник оставался недоступным напрямую. Основной прием: разрешите входящие подключения к вашему хостингу только с IP-адресов CDN-провайдера. Список IP для Cloudflare — https://www.cloudflare.com/ips/, для BunnyCDN — https://bunnycdn.com/ips. Добавьте их в .htaccess или в файрвол хостинга (через WHM или plesk).

Для шифрования: используйте TLS 1.3 на стороне источника и CDN. Настройте Full Strict в Cloudflare (в разделе SSL/TLS) — это означает, что соединение между CDN и сервером тоже зашифровано, и сертификат на источнике должен быть валидным. Для BunnyCDN включите "Force SSL" и "Origin SSL" — укажите порт 443. Это предотвращает атаки типа Man-in-the-Middle на участке CDN-источник.

Правила WAF (Web Application Firewall) на CDN: отфильтруйте запросы к wp-admin из стран, где у вас нет пользователей. Например, если сайт на русском языке — заблокируйте трафик из Китая, России (если вы за пределами), Нигерии через Geo-blocking. В Cloudflare это делается в разделе Security -> WAF -> Custom Rules. Создайте правило: если страна не RU, AND запрос содержит wp-admin — Block. Это снижает нагрузку от ботов на 90%.

5. Различия между CDN-провайдерами: материалы и спецификации сетей

Выбор CDN напрямую влияет на скорость для конкретной аудитории. Cloudflare использует Anycast-сеть — один IP-адрос обслуживает множество дата-центров, но он не всегда оптимален для регионов с низкой связностью (например, Юго-Восточная Азия). BunnyCDN строит сеть на выделенных серверах (не виртуализация) с прямыми пирингами — это дает на 20-30% меньше latency для статики по сравнению с Cloudflare Free.

KeyCDN использует комбинацию Anycast и Direct Routing, но его особенность — поддержка HTTP/2 Push (серверный пуш) для WordPress. Однако тесты показывают, что серверный пуш увеличивает TTFB (Time To First Byte) на 50-100 мс из-за конкуренции за поток. Практический совет: отключайте HTTP/2 Push в WordPress — используйте Resource Hints (preload, preconnect) вместо пуша.

StackPath (бывший Highwinds) предлагает CDN с возможностью написания собственных VCL-скриптов (аналог Varnish). Это полезно для сложных правил кэширования, например, инвалидация по тегам (WordPress — через плагин Batcache). Но для обычного пользователя достаточно встроенных правил BunnyCDN или Cloudflare. Спецификации сетей: количество точек присутствия (PoPs) — у Cloudflare 310, у BunnyCDN 114, у KeyCDN 46. Для России и СНГ лучше выбирать Cloudflare (PoPs в Москве, Санкт-Петербурге, Екатеринбурге) или BunnyCDN (только московский PoP через DataLine).

6. Инвалидация кэша и работа с плагинами кэширования WordPress

При использовании CDN важно синхронизировать очистку кэша между WordPress (через плагин) и CDN. Для Cloudflare используйте официальный плагин "Cloudflare" — при публикации записи он автоматически очищает кэш для конкретной страницы через API. В настройках плагина включите "Automatic Cache Purge" и укажите URL-шаблон: /, /%postname%/. Это гарантирует, что при обновлении контента CDN не отдает старую версию.

Для BunnyCDN и KeyCDN используйте плагин "CDN Enabler" или "WP Rocket" (интеграция с API). Технический параметр: установите "Purge Delay" на 2 секунды — это время, чтобы WordPress записал данные в БД до отправки запроса на инвалидацию. Если плагин не поддерживает API — используйте правило Cache-Busting: добавьте параметр версии к файлам (wp_enqueue_style с $ver = filemtime).

Практический шаг: настройте revalidate на уровне CDN. Для BunnyCDN в разделе "Cache" поставьте галочку "Enable Cache Revalidation" — CDN будет запрашивать у источника заголовки ETag и Last-Modified. В WordPress установите плагин "Performance Lab" — он добавляет заголовки для шаблонов. Если ETag совпадает — CDN вернет 304 Not Modified, что экономит 100% трафика для повторных запросов.

Добавлено: 24.04.2026