RFC: 2068
Оригинал: Hypertext Transfer Protocol - HTTP/1.1
Другие версии: RFC 2616
Категория: Предложенный стандарт
Дата публикации:
Авторы: , , , ,
Перевод: Алексей Симонов

13.3. Модель сравнения (validation model)

Когда у кэша есть устарелый элемент, который он хотел бы использовать как ответ на запрос клиента, он сначала должен свериться с сервером происхождения (или возможно промежуточный кэш с новым ответом), чтобы видеть, пригоден ли его кэшируемый элемент все еще для использования. Мы вызываем эту "проверку достоверности" элемента кэша. Так как мы не хотим должными быть заплатить издержки перепередачи полного ответа, если кэшируемый элемент хорош, и мы не хотим заплатить издержки дополнительного цикла обработки, если кэшируемый элемент недопустим, протокол HTTP/1.1 поддерживает использование условных методов.

Ключевые возможности протокола поддержки условных методов являются теми "объектами для проверки правильности кэша, о которых беспокоятся." Когда сервер происхождения генерирует полный ответ, он прикрепляет своего рода объект для проверки правильности к нему, который сохранен с элементом кэша. Когда клиент (user agent или кэш прокси-сервера) делает условный запрос на ресурс, для которого у него есть элемент кэша, он включает связанный объект для проверки правильности в запрос.

Сервер тогда проверяет тот объект для проверки правильности против текущего объекта для проверки правильности для объекта, и, если они соответствуют, он отвечает специальным кодом состояния (обычно, 304 (Not Modified)) и никакое тело объекта. Иначе, он возвращает полный ответ (включение тела объекта). Таким образом, мы избегаем передавать полный ответ, если объект для проверки правильности соответствует, и мы избегаем дополнительного цикла обработки, если он не соответствует.

Обратите внимание: Функции сравнения, используемые, чтобы решить, соответствуют ли объекты для проверки правильности, определены в разделе 13.3.3.

В HTTP/1.1, условный запрос смотрит точно то же самое как нормальный запрос на тот же самый ресурс, за исключением того, что он несет специальный заголовок (который включает объект для проверки правильности), который неявно поворачивает метод (обычно, GET) в условное выражение.

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

Обратите внимание: Ответ, который испытывает недостаток в объекте для проверки правильности, может все еще кэшироваться, и подаваться от кэша, пока он не истекает, если это явно не запрещено в соответствии с директивой Cache-Control. Однако, кэш не может сделать условного поиска, если у него нет объекта для проверки правильности для объекта, который означает, что он не будет регенерируем после того, как он истечет.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.