ETag и conditional requests на собеседовании системного аналитика
Проверь себя · 1/3разбор после ответа
Дано выражение:
CASE WHEN status = 'paid' THEN amount ELSE 0 END. Что вернётся, если status = NULL и amount = 500?Что такое ETag
HTTP header. Identifier текущей version resource.
GET /users/42
HTTP/1.1 200 OK
ETag: "abc123"
{...}Server generates — hash of content или version.
Caching
Client caches response с ETag.
GET /users/42
If-None-Match: "abc123"
Response if не изменилось:
HTTP/1.1 304 Not Modified
(no body)
Response если изменилось:
HTTP/1.1 200 OK
ETag: "xyz789"
{...new...}Saves bandwidth — большой response не передаётся если cached version still valid.
CDN и browser caches use ETag.
Optimistic concurrency
Update API uses ETag для preventing conflicts.
PUT /users/42
If-Match: "abc123"
{...updated...}
Response если ETag matches:
HTTP/1.1 200 OK
Response если другой client updated в parallel:
HTTP/1.1 412 Precondition FailedClient retries: GET → modify → PUT с new ETag.
Без ETag — last-write-wins, lost updates.
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Strong vs weak
Strong ETag. Bytes идентичны.
ETag: "abc123"Weak ETag. Semantically equivalent (могут differ slightly — whitespace, headers).
ETag: W/"abc123"Weak — для compressed / processed content.
Связанные темы
- HTTP методы и коды для SA
- Cache strategies для SA
- REST API для SA
- Idempotency key для SA
- Подготовка к собесу системного аналитика
FAQ
Это официальная информация?
Нет. Статья основана на RFC 7232.
Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.