Сегодня к ознакомлению - руководство по HTTP-кэшированию. Вкратце, что внутри:
Ошибки при настройке кэширования:
- путаница между
no-cache (нужна проверка) и no-store (запрет кэша)- непонимание разницы между
Expires и Cache-Control: max-age
- некорректное использование Vary, ведущее к фрагментации кэша- игнорирование расширенных директив:
s-maxage, stale-while-revalidate, immutable
Кэширование влияет на бизнес:
- скорость — улучшает Core Web Vitals
- надёжность — помогает выдерживать вирусный трафик
- стоимость — снижает расходы на трафик и серверы
- SEO — ускоряет индексацию и улучшает ранжирование
Уровни кэширования:
- браузер (памятный и дисковый кэши)
- прокси и CDN
- серверные кэши (например, Redis)
Заголовки кэширования:
-
Cache-Control — основной заголовок (`max-age`, s-maxage — срок жизни кэша, no-cache, no-store, public, private, stale-while-revalidate, stale-if-error, `immutable`)-
ETag и Last-Modified — для проверки актуальности-
Expires — устаревший, но иногда используетсяАктуальность кэша:
- свежесть =
max-age или Expires
- возраст = текущее время - Date + Age
- при истечении срока кэш делает условный запросПолезные директивы:
-
stale-while-revalidate — отдаёт устаревший ответ, пока обновляет его-
stale-if-error — отдаёт кэш, если сервер недоступенСтатья - https://habr.com/ru/companies/timeweb/articles/954906/