HTTP & Request Debugging

генератор Cache-Controlразделяйте хранение и повторное использование

Разберите заголовок ответа или соберите новый в форме. Текущий возраст задаётся как условие примера.

генератор Cache-Control

Cache-Control ответа

Данные остаются в этом браузере. Запросы к исходному серверу не отправляются.

Текущий заголовок результата

Браузер / личный кэш

Свежий в этом примере возраста

max-age: срок 3600 с

Оставшаяся свежесть: 3600 с

Общий кэш / CDN

Свежий в этом примере возраста

s-maxage: срок 86400 с

Оставшаяся свежесть: 86400 с

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

Предполагается уже сохранённый ответ с возрастом, заданным ниже. Свежесть не гарантирует хранение или использование; другие заголовки и правила платформы также действуют.

Задайте условный current_age от 0 до 2147483648. Одного Age недостаточно для всех задержек передачи и хранения. Пример статический.

Разобранные директивы

public

Разрешает общее хранение при выполнении остальных условий.

Строка 1, столбец 16

max-age=3600

Срок личного кэша и общего кэша без s-maxage.

Строка 1, столбец 24

s-maxage=86400

Заменяет max-age для общих кэшей, но не для браузера.

Строка 1, столбец 38

Показано 3 из 3 директив

Замечания к политике

В моделируемых директивах проблем не найдено. Это не проверка внедрения.

Директив: 3 · замечаний: 0

В браузере ответ уже может устареть, хотя общий кэш всё ещё считает свою копию свежей. Генератор Cache-Control показывает два срока отдельно и помогает разобраться в этой разнице на конкретных значениях.

Здесь можно собрать заголовок Cache-Control и отдельно исследовать исходный текст. HTTP-кэширование зависит не только от срока: неизвестные расширения и повторные директивы остаются видны даже после перехода к форме.

Зачем нужен генератор Cache-Control

Сохраняйте следы настройки

Генератор Cache-Control не удаляет повторы и сохраняет аргументы в кавычках. Запятая в private="X-Foo, X-Bar" относится к аргументу. Форма создаёт отдельную политику, не заменяя исследуемый заголовок набором знакомых переключателей.

Заголовок разобран на сохранённые карточки директив рядом с отдельными элементами конструктора.

Сопоставьте два срока свежести

В примере max-age=3600, а s-maxage=86400. При условном возрасте 4000 секунд копия браузера устарела, а у общей копии осталось 82400 секунд свежести. Это расчёт свежести, а не обещание попадания в кэш.

Браузер и общий кэш имеют разные интервалы свежести с общей отметкой возраста.

Три решения перед выбором срока

01

Оставьте только нужное поле

Можно вставить значение одной строкой или несколько строк Cache-Control:. Полный блок с Age или ETag отклоняется, чтобы посторонние поля не исчезали без предупреждения при якобы полной проверке.

02

Различайте пустое поле и ноль

Пустое поле времени пропускает директиву, а 0 явно задаёт ноль секунд. Загрузка примера и очистка сначала показывают замену. Отмена применения один раз восстанавливает обе входные записи, возраст и предыдущий результат.

03

Измените предполагаемый возраст

Автоанализ выполняется через 350 мс после редактирования. Отключите его для запуска кнопкой или Ctrl/Cmd + Enter. Любая правка сразу блокирует экспорт старого результата. Возраст — статическое условие, а не измеряемый таймер.

Директивы, аргументы и их действие

Разбор с сохранением аргументов

Регистр имён не учитывается; в результате имена записаны строчными буквами. Аргументы, кавычки, порядок и повторы сохраняются. Пустые элементы списка пропускаются. Для каждой директивы показаны строка и столбец.

Форма для директив ответа

Девять переключателей и четыре поля времени покрывают основные настройки. max-age и s-maxage, а также расширения stale принимают целые секунды до 2147483648. Противоречивый выбор объясняется, но не удаляется автоматически.

Срок не равен разрешению

Обычный no-cache требует успешной проверки перед повторным использованием, а no-store запрещает хранение. Положительный срок не доказывает выполнение всех условий сохранения. В общем кэше s-maxage заменяет max-age, не продлевая срок браузера.

Явные причины неопределённости

Неизвестные расширения, ограничения по полям и must-understand требуют контекста. Повторы известных директив и неверные аргументы исключают однозначный числовой вывод. На экране выводится по 50 записей, но копия и файл содержат весь текущий заголовок.

Что можно узнать по одному заголовку

Только поле ответа Cache-Control
Инструмент не запрашивает URL и не оценивает ETag, Vary и Expires совместно. Директивы запроса сохраняются с пояснением области действия. Нет конфигураций сервера, загрузки файлов или пакетного анализа.
Без реального времени истечения
Расчёт вычитает условный возраст из срока. Поправка Date, передача и время пребывания в кэше не вычисляются. Без явного срока могут действовать Expires или эвристика, поэтому отсутствие числа не означает запрет кэширования.
Без проверки правил провайдера
Настройки CDN, авторизация, статус ответа и ключ кэша меняют поведение. Отсутствие замечаний не подтверждает готовность к эксплуатации. Инструмент не очищает кэши и не гарантирует хранение или попадания.
Ограничения текста и чисел
Допускаются 16384 единицы UTF-16 и 128 директив. Ошибка синтаксиса блокирует экспорт и указывает позицию. Слишком большие разобранные секунды остаются текстом без числового вывода; форма и возраст ограничены числом 2147483648.
Допуски не продлевают свежесть
stale-while-revalidate и stale-if-error разрешают отдельные случаи использования после устаревания. Их значения не прибавляются к сроку свежести. Сочетание со строгой проверкой отмечается без моделирования каждой реализации.

Вопросы про генератор Cache-Control

Как no-cache и no-store различаются при хранении ответа?

Обычный no-cache разрешает хранение, но требует успешной проверки перед каждым повторным использованием. no-store запрещает сохранять ответ. Ни одна из этих директив не является командой удаления всех уже существующих копий.

Для чего служит immutable в настройках кэша?

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

На какие кэши действуют max-age и s-maxage?

max-age действует для личных кэшей и общих кэшей без s-maxage. s-maxage задаёт срок общего кэша и требует проверки после устаревания. Срок, которым пользуется браузер, от этого не увеличивается.

Как выбрать между public и private?

public подходит для ответов, которыми можно делиться между пользователями; private обычно ограничивает хранение личным кэшем. Нужно также учитывать содержимое и авторизацию. private не шифрует данные, а форма со списком полей имеет более узкий смысл.

Что разрешает stale-while-revalidate после устаревания ответа?

В указанном интервале устаревший ответ может использоваться, пока выполняется попытка фоновой проверки. Это зависит от запросов и поддержки кэша. Директива не гарантирует выдачу старой копии и не делает её снова свежей.

Нашли проблему?

Проверьте политику перед внедрением

генератор Cache-Control: проверьте заголовок с выбранным возрастом ответа и сравните оба кэша перед копированием.