StudyCode
К практике
НачальныйкэшCDNпроизводительность
JuniorкэшCDNпроизводительностьRedisHTTP

Кэширование

Почему сайты грузятся быстро: браузерный кэш, серверный кэш и CDN.

Слои кэширования — нажми для деталей
← Запрос пользователя проходит сверху вниз (cache hit = останавливается)
↓ cache miss
↓ cache miss
↓ cache miss
Язык примеров:
Шаг 1 из 3
1

Зачем нужен кэш

Проблема без кэша

Каждый запрос — это:

javascript
Пользователь → Сервер → База данных → Сервер → Пользователь
                           ~50-200ms

Если тысяча пользователей одновременно открывает главную страницу — тысяча запросов в БД.

Что такое кэш?

Кэш — промежуточное хранилище быстрых ответов. Первый запрос — дорогой (идём в БД). Последующие — мгновенные (берём из кэша).

javascript
1-й запрос: Пользователь → Сервер → БД (100ms) → сохранить в кэш
2-й запрос: Пользователь → Сервер → Кэш (1ms) ← cache hit!

Браузерный кэш и Cache-Control

Сервер говорит браузеру — сколько хранить ответ:

http
HTTP/1.1 200 OK
Cache-Control: max-age=3600   ← хранить 1 час
ETag: "abc123"                ← хэш версии ресурса

При следующем запросе браузер проверяет: не истёк ли кэш?

  • Если нет — берёт локально (0 мс, 0 байт трафика!)
  • Если истёк — посылает ETag, сервер отвечает 304 Not Modified (если не менялось)

TTL — время жизни кэша

TTL (Time To Live) — сколько секунд кэш считается актуальным.

  • Статика (картинки, CSS) → TTL = дни/недели
  • API данные → TTL = секунды/минуты
  • Персональные данные (корзина) → не кэшировать!