awesome-everything EN
↑ Обратно к восхождению

Кеширование

ETag: тест с выбором ответа

Суть Синтез по юниту ETag в формате выбора: что экономит 304, поток conditional request, strong vs weak валидаторы, ETag vs Last-Modified и поюнитный сбой.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Шесть вопросов, проходящих через весь юнит. Каждый — это решение, которое ты принимаешь на реальном ревью кэширования: не заголовок для пересказа, а компромисс, который надо взвесить, когда трафик, задержка и согласованность тянут в разные стороны.

Цель

Убедись, что можешь связать воедино: что экономит 304, как работает рукопожатие conditional request, strong vs weak валидаторы, ETag vs Last-Modified и поюнитный сбой, который тихо убивает ревалидацию за балансировщиком.

Викторина

Дашборд опрашивает 8 КБ JSON-конфиг каждые 30 с по каналу с RTT 80 мс. Ты добавил ETag, и каждый неизменившийся опрос теперь возвращает 304. Что ты на самом деле выиграл?

Викторина

Ты масштабировал API с 1 до 3 подов за round-robin балансировщиком, и ревалидация перестала возвращать 304 — каждый опрос это чистый 200. Какова наиболее вероятная первопричина?

Викторина

Клиент отправляет в If-None-Match сильный тег "a3f5c901", а текущий валидатор сервера — слабая форма W/"a3f5c901". Вернёт ли сервер 304 и почему?

Викторина

Когда различие strong vs weak реально меняет поведение, а не остаётся косметическим?

Викторина

Строка конфига с частыми записями может меняться несколько раз в пределах одной секунды. Коллега предлагает Last-Modified / If-Modified-Since, потому что это дешевле хеширования. В чём риск и какой валидатор точный?

Викторина

Между двумя деплоями прокси начинает сжимать ответы gzip на лету, и ранее закэшированные сильные валидаторы начинают вести себя неверно. Почему?

Итог

Сквозная линия юнита — одна фраза в пяти применениях: 304 экономит байты тела, но не круговой обход. Ревалидация — это рукопожатие версий (отпечаток, эхо, сравнение), и работает оно лишь когда ETag — чистая функция контента, чтобы все узлы совпадали. Сильные валидаторы обещают побайтовую идентичность (обязательна для range-запросов); слабые — семантическую эквивалентность, а If-None-Match сравнивает слабо в любом случае, так что различие в основном кусается на докачке. ETag обходит Last-Modified по точности из-за его секундной слепой зоны. А сбои — поюнитные токены, дрейф mtime, сжатие, меняющее байты, — все сводятся к одному правилу: держи ETag содержательным.

Продолжить восхождение ↑ETag: свободное припоминание
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.