Перейти к основному содержанию

Конструктор заголовка HTTP Cache-Control

Создавайте валидный заголовок HTTP Cache-Control из директив cacheability, freshness и revalidation — выберите контекстную предустановку или переключайте директивы отдельно, с простым объяснением каждой директивы и предупреждениями для противоречивых или частично избыточных комбинаций, таких как no-store вместе с max-age.

Ввод

Выберите распространённый контекст для заполнения подобранной комбинации директив или оставьте в режиме Custom для переключения директив вручную.

Кеширование

Разрешите любому кешу, включая общие кеши (CDN, прокси), хранить ответ — даже такой, который обычно считается не кешируемым.

Ограничьте кеширование только запрашивающим браузером — общие кеши не должны хранить этот ответ.

Разрешите хранение, но требуйте переvalidation с источником перед каждым повторным использованием. НЕ отключает кеширование, несмотря на название.

Запретите хранение ответа где-либо кому-либо. Самая строгая директива — переопределяет все остальные здесь.

Freshness

Как долго ответ остаётся свежим в секундах для браузеров и общих кешей. Оставьте пусто для исключения.

Переопределяет max-age только для общих кешей (CDN, прокси). Оставьте пусто для исключения.

После истечения freshness подавайте устаревший ответ до этого количества секунд во время переvalidation в фоне. Оставьте пусто для исключения.

Если переvalidation не удалась (ошибка источника или таймаут), подавайте устаревший ответ до этого количества секунд. Оставьте пусто для исключения.

Переvalidation & Прочее

После истечения свежести ответ должен быть переvalidate с источником перед переиспользованием — кеши не могут подавать устаревшие данные даже если источник недостижим.

То же что must-revalidate, но действует только на общие кеши — браузеры не затронуты.

Скажите браузеру что содержимое никогда не изменяется пока свежее, поэтому может пропустить условную переvalidation — даже при принудительной перезагрузке. Бессмысленно без max-age/s-maxage.

Запретьте кешам и прокси модифицировать содержимое ответа (например переупаковка изображений) даже если бы они обычно это делали.

Кеш может хранить этот ответ только если понимает семантику его кода статуса — обычно используется с no-store.

Вывод

Полная строка заголовка готовая для вставки в конфигурацию ответа вашего сервера.

Что делает каждая директива
ДирективаЭффект
No data yet
Предупреждения

Противоречивые или частично избыточные комбинации — заголовок всё ещё генерируется, но эти директивы не будут вести себя как вы ожидали вместе.

Это было полезно?

Руководства

Что такое HTTP Cache-Control Header Builder?

Cache-Control — это заголовок ответа HTTP, который говорит браузерам, CDN и прокси может ли ответ быть закеширован, на как долго и как его следует переvalidate когда он устаревает. Это также один из самых простых для ошибок заголовков: no-cache не означает «не кешировать», no-store молча переопределяет почти всё остальное что вы устанавливаете вместе с ним, и s-maxage имеет значение только для общих кешей в то время как max-age имеет значение для обоих. Этот инструмент собирает правильный заголовок из отдельных директив (или подобранной предустановки) и объясняет на простом языке что именно делает каждая активная директива — плюс отмечает комбинации которые противоречат или частично отменяют друг друга.

Как использовать

  1. Выберите Context Preset для распространённого сценария — ответ API, статический ресурс, страница HTML или приватные данные — или оставьте в режиме Custom для переключения директив вручную.
  2. В режиме Custom отметьте применимые директивы Cacheability (public, private, no-cache, no-store), установите сроки Freshness в секундах (max-age, s-maxage, stale-while-revalidate, stale-if-error), и включите нужные вам директивы Revalidation (must-revalidate, proxy-revalidate, immutable, no-transform, must-understand).
  3. Поле Cache-Control Header обновляется автоматически — скопируйте его прямо в конфигурацию ответа сервера, правило CDN или код приложения.
  4. Прочитайте What Each Directive Does для простого объяснения каждой включённой вами директивы, и проверьте Warnings на предмет чего-то что противоречит или молча отменяет другую установленную вами директиву.

Выбор предустановки

  • API responseno-store. Динамические данные по запросу которые никогда не должны кешироваться никем.
  • Static assetpublic, max-age=31536000, immutable. Для файлов с хешированным или версионированным именем файла (app.a1b2c3.js) — сам URL меняется когда меняется содержимое, поэтому безопасно кешировать на год и полностью пропустить переvalidation.
  • HTML pageno-cache. URL остаётся прежним но содержимое может меняться, так что кеши могут его хранить но должны проверять с источником перед повторной подачей.
  • Private dataprivate, max-age=0, must-revalidate. Страницы аккаунтов, корзины или что-то специфичное пользователю: кешируется только браузером и всегда переvalidate.

FAQ

В чём разница между no-cache и no-store?

no-cache позволяет кешу хранить ответ но требует его переvalidation с источником перед повторной подачей — это директива «проверь сначала» а не «не кешируй». no-store — это строгая версия: кеш не может хранить ответ вообще. Смешивание no-store с директивами типа max-age или must-revalidate не инвалидно но эти директивы становятся бессмысленны — no-store уже предотвращает любое хранилище для применения к нему.

В чём разница между max-age и s-maxage?

max-age устанавливает срок freshness для каждого кеша — браузер и любой общий кеш (CDN, прокси) посередине. s-maxage переопределяет этот срок только для общих кешей позволяя вам кешировать ответ дольше (или короче) на CDN чем в браузере самого посетителя. s-maxage на приватном ответе не имеет эффекта т.к. общие кеши вообще не разрешено хранить приватные ответы.

Означает ли immutable что ответ никогда не переvalidate?

Только в пределах его окна freshness. immutable говорит браузеру что может полностью пропустить условные запросы переvalidation — включая при принудительной перезагрузке — пока max-age (или s-maxage) говорит что ответ свежий. После истечения этого окна обычные правила переvalidation применяются снова. Установка immutable без max-age/s-maxage не даёт ему окна freshness для применения.

Является ли Cache-Control единственным заголовком кеширования который мне нужен?

Это основной для управления freshness и хранилищем но валидаторы типа ETag и Last-Modified всё ещё важны для запросов переvalidation — это то что кеш отправляет обратно источнику чтобы спросить «изменилось ли это?» после истечения max-age. Чтобы преобразовать длительность в готовый к использованию max-age= без арифметики секунд используйте Cache TTL Calculator. Для эквивалентного рабочего процесса построения заголовка на кросс-origin запросах см. CORS Headers Builder.

Приватность

Этот инструмент работает полностью в вашем браузере. Директивы и значения которые вы устанавливаете никогда не отправляются на наши серверы и не хранятся там.

http headerresponse headerbrowser cachingcdn cachingreverse proxyhttp cachingweb performanceno-storemust-revalidatestale-while-revalidate

Другие способы использовать этот инструмент

REST API

curl -X POST https://api.iotools.cloud/v1/tool/cache-control-header-builder \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "preset": "staticAsset"
  }'

Подставьте свой собственный ключ из аккаунта. Поля инструмента — это тело запроса, без обёртки.

Спросите у ИИ-агента

Use the IOTools `cache-control-header-builder` tool (HTTP Cache-Control Header Builder) on this input:

YOUR_INPUT_HERE

Вставьте это любому агенту, подключённому к MCP-серверу IOTools, и добавьте свой ввод.

Виджет для встраивания

<iframe
  src="https://iotools.cloud/embed/cache-control-header-builder/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="Конструктор заголовка HTTP Cache-Control — iotools.cloud"
  sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
  allow="clipboard-write"
  style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>

Вставьте это на свою страницу — бесплатно, без ключа, нужна лишь обратная ссылка.

Стоимость вызоваОт 5 кредитов

Также доступно через

Нравятся инструменты? Уберите рекламу.

Один платёж навсегда убирает всю рекламу с вашего аккаунта. Без подписки, без слежки.