Выбор ответа Middle Кеширование обновлено

ETag и условные запросы

Вопрос

Как работают заголовки ETag и If-None-Match?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Сервер отдаёт версию ресурса в ETag, клиент шлёт её в If-None-Match; без изменений ответ 304 без тела. Условный запрос экономит трафик: при неизменном ресурсе приходит короткий 304, и клиент берёт тело из кеша.

Варианты ответа

  1. Сервер подписывает ответ в ETag, а клиент в If-None-Match присылает подпись для проверки целостности тела
  2. If-None-Match запрещает кешировать ответ, если его ETag совпадает с версией у прокси
  3. Сервер отвечает 200 с полным телом, а ETag клиент лишь сравнивает с сохранённым
  4. Сервер отдаёт версию ресурса в ETag, клиент шлёт её в If-None-Match; без изменений ответ 304 без телаправильный ответ

Разбор

Условный запрос экономит трафик: при неизменном ресурсе приходит короткий 304, и клиент берёт тело из кеша. URLSession и OkHttp поддерживают это автоматически при включённом HTTP-кеше. Cache-Control: max-age позволяет вообще не ходить на сервер какое-то время. Целостность и подпись эти заголовки не обеспечивают, кеширование не запрещают, а смысл в том, чтобы сервер не слал тело повторно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме