ETag и conditional requests на собеседовании системного аналитика

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — 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 Failed

Client retries: GET → modify → PUT с new ETag.

Без ETag — last-write-wins, lost updates.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Strong vs weak

Strong ETag. Bytes идентичны.

ETag: "abc123"

Weak ETag. Semantically equivalent (могут differ slightly — whitespace, headers).

ETag: W/"abc123"

Weak — для compressed / processed content.

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на RFC 7232.


Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.