Выбор ответа Middle Кеширование обновлено
Почему CDN показал чужой профиль
Вопрос
После включения CDN пользователи иногда видят чужие имена в шапке. Ответ /api/me отдаётся с Cache-Control: max-age=60. Что исправить?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Добавить private (или no-store), чтобы общие кеши не хранили ответ. Без private ответ считается пригодным для общих кешей, и CDN раздаёт профиль одного пользователя всем. private оставляет кеш только в браузере владельца, no-store запрещает хранение совсем.
Варианты ответа
- Заменить
max-age=60наmax-age=5, чтобы CDN держал ответ меньше - Добавить
private(илиno-store), чтобы общие кеши не хранили ответправильный ответ - Добавить в ответ
ETag, чтобы CDN сверял версию профиля с сервером - Добавить
Vary: Accept-Encoding, чтобы копии в CDN разделились
Разбор
Без private ответ считается пригодным для общих кешей, и CDN раздаёт профиль одного пользователя всем. private оставляет кеш только в браузере владельца, no-store запрещает хранение совсем. Уменьшение max-age только сужает окно утечки. ETag не запрещает хранить ответ. Vary: Accept-Encoding разделяет копии по сжатию, а не по пользователю.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.