Выбор ответа Middle Кеширование обновлено
ETag и условные запросы
Вопрос
Как работают заголовки ETag и If-None-Match?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Сервер отдаёт версию ресурса в ETag, клиент шлёт её в If-None-Match; без изменений ответ 304 без тела. Условный запрос экономит трафик: при неизменном ресурсе приходит короткий 304, и клиент берёт тело из кеша.
Варианты ответа
- Сервер подписывает ответ в
ETag, а клиент вIf-None-Matchприсылает подпись для проверки целостности тела If-None-Matchзапрещает кешировать ответ, если егоETagсовпадает с версией у прокси- Сервер отвечает 200 с полным телом, а
ETagклиент лишь сравнивает с сохранённым - Сервер отдаёт версию ресурса в
ETag, клиент шлёт её вIf-None-Match; без изменений ответ 304 без телаправильный ответ
Разбор
Условный запрос экономит трафик: при неизменном ресурсе приходит короткий 304, и клиент берёт тело из кеша. URLSession и OkHttp поддерживают это автоматически при включённом HTTP-кеше. Cache-Control: max-age позволяет вообще не ходить на сервер какое-то время. Целостность и подпись эти заголовки не обеспечивают, кеширование не запрещают, а смысл в том, чтобы сервер не слал тело повторно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.