← Назад к вопросам

Что такое Cash?

1.6 Junior🔥 141 комментариев
#Клиент-серверная архитектура#Теория тестирования

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Cache в контексте тестирования и веб-приложений

Cache (кеш) — это быстрая память, которая хранит копии данных для быстрого доступа. За 10+ лет я работал с различными типами кешей в приложениях.

Что такое Cache

Cache — это быстрая память, которая хранит копии данных для быстрого доступа. Вместо каждый раз получать данные с сервера, приложение берёт их из кеша.

Типы кеша

1. Browser Cache (кеш браузера)

Браузер хранит изображения, CSS, JavaScript на компьютере пользователя с Cache-Control header: max-age=86400 означает кешировать на 1 день

Проверяю что:

  • Cache-Control header установлен
  • Повторный запрос возвращает 304 Not Modified

2. Server Cache (кеш на сервере)

Результаты дорогих операций кешируются:

  • Первый запрос медленный (вычисляется)
  • Второй запрос быстрый (из кеша)

3. CDN Cache

Content Delivery Network хранит копии файлов на серверах по всему миру, ближе к пользователям

4. Application Cache / In-Memory Cache

Приложение хранит данные в памяти (Redis, Memcached):

  • Первый запрос берёт из БД
  • Сохраняет в кеш на определённое время (TTL)
  • Второй запрос — из кеша

Cache Headers HTTP

При тестировании API проверяю cache headers:

Cache-Control значения:

  • max-age=3600 — кешировать 1 час
  • no-cache — использовать кеш, но проверять с сервером
  • no-store — не кешировать вообще (для sensitive данных)
  • public — может кешировать браузер и proxy
  • private — только браузер

ETag — уникальный идентификатор версии ресурса Last-Modified — когда был обновлен ресурс

Проблемы с кешем

1. Stale Cache (устаревший кеш)

Пользователь видит старые данные после обновления. Решение: cache invalidation — очищать кеш при обновлении данных.

2. Cache Stampede

Когда кеш истекает, множество пользователей одновременно дёргают сервер, перегружая его.

3. Memory Leak

Кеш растёт бесконечно и начинает занимать всю память.

Чек-лист для тестирования кеша

  • Cache-Control headers установлены правильно
  • ETag работает (304 при не изменённых данных)
  • Кеш инвалидируется при обновлении данных
  • Нет утечек памяти из кеша
  • TTL правильный
  • Sensitive данные не кешируются
  • Performance улучшился с кешем
  • Нет race conditions при обновлении

Cache критически важен для производительности, но может быть источником багов. Я всегда тестирую кеширование, потому что это часто забивают разработчики.

Что такое Cash? | PrepBro