← Cloudflare Cache / cache / concepts
CDN-Cache-Control
CDN-Cache-Control является полем заголовка ответа, которое задаётся на источнике для отдельного управления поведением кэшей CDN независимо от других посредников, обрабатывающих ответ. Вы можете задать CDN-Cache-Control или Cloudflare-CDN-Cache-Control заголовок ответа с теми же директивами, что используются с Cache-Control.
Приоритет заголовков
Доступно несколько вариантов, позволяющих определить, как CDN-Cache-Control директивы взаимодействуют с Cache-Control директивы.
Если Cache Response Rule задает Cache-Control директивы с помощью set_cache_control действие, эти директивы имеют приоритет над любыми установленными источником Cloudflare-CDN-Cache-Control и CDN-Cache-Control заголовки.
Если ни одно правило Cache Response Rule не применяется, исходный сервер может:
-
Возврат
CDN-Cache-Controlзаголовок ответа, который Cloudflare учитывает при принятии решений о кешировании.Cache-Control, если он также возвращается источником, проксируется без изменений и не влияет на решения о кешировании, принимаемые Cloudflare. Кроме того,CDN-Cache-Controlпроксируется дальше на случай, если между Cloudflare и браузером есть другие CDN. -
Возврат
Cloudflare-CDN-Cache-Controlзаголовок ответа. Результат такой же, как если бы источник возвращалCDN-Cache-Controlза исключением того, что Cloudflare не проксируетCloudflare-CDN-Cache-Controlнижестоящим серверам, так как этот заголовок используется только для управления Cloudflare. Этот параметр полезен, если вы хотите, чтобы только у Cloudflare было другое поведение кеширования, а все остальные нижестоящие серверы полагались наCache-Controlили если вы не хотите, чтобы Cloudflare проксировалCDN-Cache-Controlзаголовок далее по цепочке. -
Возврат обоих вариантов
Cloudflare-CDN-Cache-ControlиCDN-Cache-Controlзаголовки ответа. В этом случае Cloudflare учитывает толькоCloudflare-CDN-Cache-Controlпри принятии решений о кэшировании, поскольку это наиболее специфичная версияCDN-Cache-Controlи проксируетCDN-Cache-Controlнижестоящим серверам. Передача толькоCDN-Cache-Controlв этой ситуации полезно, если вы хотите, чтобы поведение кэширования Cloudflare отличалось от поведения других CDN далее по цепочке.
Кроме того, суррогаты не будут учитывать Cache-Control заголовки в ответе источника. Например, если Surrogate-Control заголовок присутствует в ответе, Cloudflare игнорирует любой Cache-Control директивы, даже если Surrogate-Control заголовок не содержит директив.
Взаимодействие с другими функциями Cloudflare
правило кеширования Edge Cache TTL
правило кеширования Edge Cache TTL переопределяет время кеширования ресурса на периферии (в дата-центрах Cloudflare). Это правило кеширования переопределяет директивы в Cloudflare-CDN-Cache-Control/CDN-Cache-Control которые определяют, как долго ресурс кэшируется на периферийных серверах. Создать это правило можно в дашборде в разделе Кеширование > Cache Rules.
Правило кэша Browser Cache TTL
Правило кэша Browser Cache TTL переопределяет время кеширования ресурса браузерами и серверами, расположенными после Cloudflare. Browser Cache TTL изменяет только Cache-Control заголовок ответа. Это правило кеширования не изменяет Cloudflare-CDN-Cache-Control/CDN-Cache-Control заголовки ответа.
Другие заголовки ответа источника
Источник возвращает Expires заголовок ответа, задающий время, после которого объект считается устаревшим для браузера. Этот заголовок ответа не влияет на решение Cloudflare о кешировании, когда Cloudflare-CDN-Cache-Control/CDN-Cache-Control используется.
Значения кеша по умолчанию в Cloudflare
Если Cloudflare не получает Cloudflare-CDN-Cache-Control, CDN-Cache-Control, или Cache-Control значений кешируемые ресурсы используют общее значения по умолчанию.
Когда использовать CDN-Cache-Control
Управление значениями TTL кешированных ресурсов
Используйте CDN-Cache-Control если вы хотите управлять значениями TTL кэшированных ресурсов отдельно для кэшей источника, кэшей CDN и кэшей браузера. В примере ниже показано, как управлять значениями TTL кэшированных ресурсов с помощью заголовков ответа, заданных источником.
Заголовки:
Cache-Control: max-age=14400, s-maxage=84000Cloudflare-CDN-Cache-Control: max-age=24400CDN-Cache-Control: max-age=18000
Поведение кеша:
Кеширует | Cache TTL (в секундах) | ||||||||
|---|---|---|---|---|---|---|---|---|---|
Кеш исходного сервера | 14400 | ||||||||
Общий сетевой кеш | 84000 | ||||||||
Cloudflare Edge | 24400 | ||||||||
Другие CDN | 18000 | ||||||||
Browser Cache | 14400 |
Укажите, когда отдавать устаревший контент
Используйте CDN-Cache-Control заголовки вместе с Cache-Control заголовки, чтобы указать, когда отдавать устаревшее содержимое в случае ошибки или во время повторной проверки. В примере ниже показано, как можно настроить заголовки и директивы для CDN при обработке ошибок.
Заголовки:
Cache-Control: stale-if-error=400Cloudflare-CDN-Cache-Control: stale-if-error=60CDN-Cache-Control: stale-if-error=200
Поведение в ответ на ошибка 5XX:
Кеширует | Отдача устаревшего контента при ошибке (в секундах) | ||||||||
|---|---|---|---|---|---|---|---|---|---|
Уровень кеша источника/сетевой кеш/кеш браузера | 400 (если предполагается, что директива применяется) | ||||||||
Cloudflare Edge | 60 | ||||||||
Другая CDN | 200 |