Кратко
304 Not Modifiedотвечает на условный HTTP-запрос о выбранном представлении и позволяет обновить сохранённые метаданные; это не сертификат актуальности всей цепочки зависимостей.- Прежде чем использовать повторную проверку как разрешение на важное решение, валидатор следует связать с версией данных, политик или снимка, из которых было сформировано представление.
Представим конечную точку конфигурации, работающую на снимке базы данных. Кэш отправляет If-None-Match с имеющейся меткой сущности. Сервер-источник проверяет условие для выбранного представления и отвечает 304 Not Modified. Новое содержимое не передаётся. Кэш обновляет допустимые метаданные, а панель превращает зелёное событие в более широкую формулировку: «цепочка зависимостей проверена».
Именно здесь доказательство протокола становится управленческой фикцией. Ответ 304 может быть правильным, даже если снимок, использованный приложением, старше допустимого для бизнес-решения. HTTP ответил на поставленный вопрос; панель незаметно подменила его другим.
У условия есть определённый объект
RFC 9110 определяет If-None-Match через метки сущности выбранного представления. Для условного GET или HEAD ложное условие приводит к 304 вместо ответа 200, который иначе содержал бы данные. Ценность механизма именно в ограниченности смысла: условие валидатора было проверено для целевого представления по правилам HTTP.
Поэтому 304 — не пустой 200. Содержимого у него нет, но при необходимости он передаёт поля для работы кэша: ETag, Date, Cache-Control, Expires, Content-Location и Vary. RFC 9111 далее описывает, как кэш определяет сохранённые ответы для обновления. Сильные и слабые валидаторы выполняют разные роли. После нахождения соответствующего ответа применимые поля заголовков обновляются значениями из 304 с учётом установленных исключений.
Это строгая операция над представлением и его метаданными, а не заявление о состоянии всех систем, повлиявших на него.
Действительность представления не равна актуальности зависимостей
Метка сущности относится к семантике представления, выбранной источником. Приложение может вычислять её из итоговых байтов, номера версии, идентификатора развёртывания или иного входа реализации. HTTP не требует кодировать в ней версию каждой строки базы данных, пакета политик, переключателя функции, потока прав или результата вышестоящего API.
Для производного представления это различие принципиально. Байты JSON могли не измениться после сохранения, поэтому 304 будет корректным. Но если они были рассчитаны из снимка, который должен был обновиться пять минут назад, неизменное представление сохраняет именно ту устарелость, которую оператору нужно обнаружить. Повторная проверка подтверждает непрерывность внутри границы валидатора, но не расширяет эту границу задним числом.
Это не довод против условных запросов. Они экономят передачу и вычисления, и не всякий 304 скрывает старые данные. Вопрос в объёме доказательства. «Представление по-прежнему соответствует этому валидатору» не означает «все зависимости актуальны» без дополнительного подтверждения.
Зафиксировать недостающую цепочку происхождения
Важный ответ конфигурации может публиковать или журналировать идентификатор снимка, время обновления источника, версию пакета политик или отметку материализации. Кэш может сохранить цель запроса, идентификатор ответа, условные поля, метаданные 304 и решение, использовавшее результат.
Предлагаемая здесь квитанция цепочки проверки — редакционная модель контроля, а не протокольный объект, определённый IETF или цитируемыми RFC. Она должна связывать:
- цель запроса и выбранное представление;
- тип и значение валидатора вместе с условными полями;
- время, статус и метаданные ответа 304;
- сохранённый ответ и обновлённые поля;
- версии вышестоящих снимков, политик или зависимостей;
- решение, контроль или автоматизацию, использовавшие результат.
Если источник не может связать представление с версией зависимости, честное состояние звучит так: «представление повторно проверено; актуальность зависимостей неизвестна». Такая формулировка уже, чем зелёный значок, зато намного полезнее для решения.
Источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров

