Агрессивное кеширование CSS/JS
Ускорьте загрузку ресурсов с помощью GET/HEAD, ответов 200/301/302/304 и TTL от 1 дня и выше; удалите параметры отслеживания кампаний из ключа кеша.
Справка CDN.com.tr
Настраивайте ключ кеша домена/пути, TTL, методы/статусы, заголовки/cookie, оптимизацию и правила ограничения запросов.
Кеш, безопасность, WAF и очистка
Настраивайте ключ кеша домена/пути, TTL, методы/статусы, заголовки/cookie, оптимизацию и правила ограничения запросов.
В этих примерах используются безопасные сценарии на базе origin WordPress: для статических файлов, строк запроса, заголовков/cookie и чувствительных путей сессии.
Ускорьте загрузку ресурсов с помощью GET/HEAD, ответов 200/301/302/304 и TTL от 1 дня и выше; удалите параметры отслеживания кампаний из ключа кеша.
Обходите кеш при наличии cookie сессии или корзины; пути wp-admin и wp-login никогда не должны попадать в общий кеш.
Игнорируйте Set-Cookie или Cache-Control при принятии решений о кешировании, скрывайте X-Origin-Debug/X-Powered-By от пользователей и включайте отладку upstream только временно.
Для путей, похожих на API, включайте в ключ кеша только параметры запроса, изменяющие содержимое, и задайте лимит запросов.
Сузьте правило по домену, протоколу и регулярному выражению пути до изменения поведения; широкие правила `/` требуют внимательной проверки.
Оставляйте параметры запроса в ключе кеша, только если они меняют содержимое; параметры отслеживания обычно удаляют.
Персонализированный контент, корзина и admin-страницы должны обходить кеш; статический и анонимный контент может получить TTL.
Игнорирование заголовка origin при решениях о кешировании — это не то же самое, что скрытие его от клиента.
Настройки на уровне аккаунта задают общее поведение; Add Rule задаёт точное поведение для домена/пути.
Ожидаемый результат: Открывается модальное окно правила, новое правило готовится в рамках выбранного аккаунта.
cdnctl accounts list
export ACCOUNT_UUID=<selected_account_uuid>
cdnctl cdn advanced-rules list --account "$ACCOUNT_UUID" --format table
Эти поля определяют, каким запросам соответствует правило; слишком широкое регулярное выражение может изменить весь сайт.
Ожидаемый результат: Правило соответствует только целевому имени хоста и путям.
cat > rule-static-assets.json <<EOF
{"server_domain_names":["www.example.com"],"type":["http","http2"],"path_regex":"^/cdn-help/rules/(cache-demo\\.css|query-demo\\.json)$"}
EOF
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-static-assets.json
Для статических файлов удалите параметры запроса для отслеживания из ключа кеша и оставьте только реальные варианты.
Ожидаемый результат: Анонимные объекты CSS/JSON кешируются без разделения кеша по ненужным параметрам запроса.
jq '. + {"cache_query_mode":"ignore_list","cache_query_params":["utm_*","gclid","fbclid","msclkid"],"cache_valid_time":"1 day","allowed_cache_methods":["GET","HEAD"],"allowed_cache_responses":["200","301","302","304"],"response_cache_times":{"200":"1 day","301":"1 week","302":"2 hours","304":"1 day"}}' rule-static-assets.json > rule-static-assets-cache.json
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-static-assets-cache.json
Пути admin, login, корзины и оформления заказа должны сохранять поведение origin, а не возвращать попадания в кеш.
Ожидаемый результат: Запросы с сессией не возвращают другому пользователю общий кешированный контент.
cat > rule-wordpress-sensitive.json <<EOF
{"server_domain_names":["www.example.com"],"type":["http","http2"],"path_regex":"^/(wp-admin|wp-login\\.php|cart|checkout)(/.*)?$","bypass":"on","bypass_by_cookie":"wordpress_logged_in\nwoocommerce_cart_hash\nwp_woocommerce_session_","limit":30,"per_time":10}
EOF
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-wordpress-sensitive.json
Отдельно решите, влияют ли заголовки origin на решения о кешировании и показываются ли они браузерам.
Ожидаемый результат: Заголовки origin контролируются осознанно, а отладка не остаётся включённой в продакшн-трафике.
jq '. + {"ignore_headers":["Cache-Control","Set-Cookie"],"hide_headers":["X-Origin-Debug","X-Powered-By"],"custom_headers":"X-Forwarded-Host: $host\nX-CDN-Rule-Debug: temporary","debug_upstream_headers":true,"image_optimization":"on","white_space":"on"}' rule-static-assets-cache.json > rule-headers-debug.json
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-headers-debug.json
Поскольку Save может запустить процесс живого применения, финальная проверка выполняется по пути/домену/TTL/заголовкам.
Ожидаемый результат: После успешного выполнения операции подходящие запросы показывают новое поведение кеша/заголовков/ограничения частоты.
cdnctl cdn advanced-rules create --account "$ACCOUNT_UUID" --file rule-headers-debug.json
cdnctl operations list --account "$ACCOUNT_UUID"
curl -I "https://www.example.com/cdn-help/rules/cache-demo.css?utm_source=test"
curl -I -H "Cookie: wordpress_logged_in=redacted" "https://www.example.com/wp-admin/"
Административная часть/корзина WordPress обходит кеш, а статические файлы и анонимные JSON-пути кешируются намеренно.
Используйте журналы WAF, чтобы объяснить заблокированный или подозрительный трафик, не раскрывая внутренние системы логирования.
Очистите путь, сохранённый путь или весь аккаунт и разделите кеш CDN и кеш браузера.
Используйте заголовок ответа X-Proxy-Cache-MT, чтобы точно увидеть, что CDN сделал с запросом, и убедиться, что кеширование работает как задумано.