caching
Кеширование
Как ускорять приложения, запоминая результаты вместо повторного вычисления — и самое сложное: понимать, когда запомненная копия устарела.
Начать трек →С нуля
Перед senior-материалом: что вообще такое кеш и горстка слов, которые остальной трек считает уже знакомыми.Уровни кэширования: от CPU до CDN
Как кэши выстраиваются от L1/L2/L3 через RAM, кэши приложений и CDN — и зачем нужен каждый уровень.Инвалидация кэша: самая сложная задача в CS
Стратегии вытеснения устаревших записей — TTL, event-driven purge, write-through, write-behind — и почему ошибка здесь портит состояние пользователя.Cache stampede: когда одно TTL истечение превращается в тысячи SQL-запросов
Почему одно истечение TTL превращает горячий ключ кеша в flash-DDoS против origin, и четыре механизма — локи, single-flight, XFetch и stale-while-revalidate — удерживающие БД в живых.ETag: условные запросы и ответы без тела
Как entity-теги включают conditional GET — сервер возвращает 304 Not Modified при неизменном контенте, экономя трафик и снижая задержку.Cache-Control: управление браузерами и CDN
Директивы — max-age, s-maxage, no-store, stale-while-revalidate — которые говорят каждому кэшу в цепочке, как долго хранить ответ.Stale-while-revalidate: отдать устаревшее, обновить в фоне
Как SWR разделяет свежесть и задержку — немедленно отдаёт закэшированную версию, а затем обновляет её тихо, устраняя пик tail-latency от синхронной ревалидации.Dogpile-эффект: одновременные промахи кэша, которые убивают origin
Когда популярный ключ истекает, все параллельные запросы промахиваются одновременно и нагружают базу данных — паттерн, отличие от stampede и как mutex-блокировки и вероятностное раннее истечение его предотвращают.Проектирование системы кэширования: объединение всех уровней
Как скомпоновать CDN, reverse-proxy, кэши приложения и базы данных в единую стратегию — выбор TTL, триггеров инвалидации и путей отказа, которые выдержат реальный трафик.Проекты по этому треку
Guided-проекты, которые закрепляют изученное здесь.
Лаборатория cache stampede
Воспроизведи thundering-herd промах кэша под нагрузкой, затем убей его через single-flight и пересчёт с ранним истечением.
LRU-кэш
Собери LRU-кэш с вытеснением за O(1) на связке хешмапы и двусвязного списка — та самая задача, которая показывает, почему вытеснение из кэша сложнее, чем кажется.
Распределённый rate limiter
Собери token-bucket лимитер, который держится поперёк многих инстансов приложения за счёт счётчика в Redis, а не в памяти процесса.
URL-сокращатель под нагрузкой
Собери URL-сокращатель, который выдерживает настоящий трафик, — а потом эксплуатируй его: задеплой, наблюдай и разберись с инцидентом, когда одна горячая ссылка плавит твой кэш.
Очереди, потоки, события
Как части системы передают работу через очереди сообщений, а не ждут друг друга — чтобы оставаться быстрыми и пережить сбой, не потеряв ни одного сообщения.