ETag и conditional requests на собеседовании системного аналитика
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Что такое 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.
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+ вопросами для собесов.