Вебсправочник
Основы веб-разработки

ETag: условный запрос и повторная проверка кеша

ETag является валидатором версии представления и помогает повторно использовать сохранённое тело ответа после проверки сервера.

Назначение

ETag является валидатором версии представления и помогает повторно использовать сохранённое тело ответа после проверки сервера.

Как это работает

Клиент передаёт известный валидатор через If-None-Match. Если представление не изменилось в рамках правил сравнения, сервер может вернуть 304 без нового тела; клиент использует сохранённые данные.

Пример

GET /style.css HTTP/1.1
Host: example.com
If-None-Match: "style-v2"

HTTP/1.1 304 Not Modified
ETag: "style-v2"

Что должно получиться

Сервер подтверждает пригодность известной версии вместо повторной передачи тела. Идентификатор здесь условный: ETag является непрозрачным значением, а не обязательно номером версии.

Граница применения и частая ошибка

304 — не ошибка отсутствующего файла и не отдельная HTML-страница. Не ожидайте от него полного тела ответа; при проблеме сначала изучите условия запроса и состояние кеша.

Самостоятельная проверка

На собственном учебном сервере загрузите ресурс дважды с кешем. Сравните переданные байты и заголовки. Затем измените файл и убедитесь, что клиент получает новую версию.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.