Кеширование
Cache-Control: свободное воспроизведение
Воспроизведение бьёт перечитывание. На каждый промпт скажи или запиши полный ответ по памяти, прежде чем открыть модельный — усилие припоминания и закрепляет семантику директив.
Восстанови ключевые различия юнита — хранить против ревалидировать, TTL браузера против общего, public против private, immutable-ассеты и отдачу устаревшего — не заглядывая в урок.
- 01Объясни разницу между no-store и no-cache и почему их смешение вызывает реальные инциденты.
- 02Какова связь между max-age и s-maxage и что ломается, когда забываешь s-maxage за CDN?
- 03Почему отсутствие private на аутентифицированном маршруте — классическая утечка данных и каков senior-рефлекс?
- 04Разбери, почему имена по хешу содержимого делают public, max-age=31536000, immutable одновременно агрессивным и корректным, и что НЕЛЬЗЯ так кэшировать.
- 05Что делают stale-while-revalidate и stale-if-error и чем они отличаются от must-revalidate?
- 06Что делает Vary, почему это ключ кэша, а не директива безопасности, и где он тебя подводит?
Если ты смог восстановить каждый ответ по памяти, ты держишь хребет юнита: no-store запрещает хранение, а no-cache лишь форсирует ревалидацию, поэтому имя no-cache и есть ловушка; max-age управляет всеми кэшами, а s-maxage переопределяет его только для общих, поэтому забыть s-maxage — отдать CDN неверный TTL; private держит ответы на пользователя вне CDN, и его отсутствие — классическая утечка; имена по хешу содержимого делают immutable-кэш на год корректным, потому что изменение значит новый URL; stale-while-revalidate и stale-if-error меняют устарелость на задержку и устойчивость против строгости must-revalidate; а Vary ключует варианты, а не исключает разделение, поэтому безопасность должна жить в private/no-store.