Стратегия кеширования: Многоуровневая оптимизация производительности

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

Проблема: Некешированные запросы медленные

Без кеширования каждая загрузка страницы требует:

  • Запросы к базе данных: Получение данных о товарах, уровнях запасов, ценах

  • Вызовы API: Внешние сервисы для расчета стоимости доставки, платежей

  • Вычисления: Расчет цен, проверка наличия

  • Загрузка изображений: Изображения товаров, миниатюры

Кеширование устраняет повторяющуюся работу, сохраняя результаты для повторного использования.

Решение: Многоуровневое кеширование

Мы используем кеширование на пяти уровнях:

  1. Браузерный кеш: Устройство пользователя хранит статические ресурсы
  2. Кеш CDN: Локации CloudFront на границе сети кешируют контент глобально
  3. Кеш приложения: Valkey хранит часто запрашиваемые данные
  4. Кеш базы данных: Valkey располагается перед базой данных
  5. Кеш ИИ: DeepSeek кеширует системные промпты

Уровни кеширования

Кеширование в браузере (CloudFront)

CloudFront обеспечивает браузерное кеширование с соответствующими TTL:

  • Изображения: Долгий TTL (24-72 часа)

  • CSS/JS: Версионирование с обходом кеша

  • Ответы API: Короткий TTL или отсутствие кеша

Кеширование CDN (CloudFront)

CloudFront кеширует контент в граничных локациях:

Кеширование приложения (Valkey)

Valkey обеспечивает кеширование в памяти:

  • Сессии: Сессии пользователей со скользящим сроком действия

  • Популярные запросы: Наиболее часто искомые термины

  • Автодополнение: Поисковые подсказки

  • Количество товаров: Доступность запасов

  • Сопоставления фраз: Данные для извлечения фильтров

Кеширование базы данных

Valkey располагается перед базой данных:

  • Данные товаров: Кешируются для производительности

  • Стоимости деталей: Кешируются для расчета цен

  • Списки SKU: Кешируются для листингов товаров

  • Манифесты изображений: Кешируются для загрузки изображений

Кеширование ИИ (DeepSeek)

DeepSeek обеспечивает кеширование промптов:

  • Системные промпты: Кешируются для эффективности

  • Попадания в кеш: Сокращают использование токенов

  • Промахи кеша: Генерируют новый контент

Кеширование переводов

Кеширование переводов использует несколько уровней:

  • Valkey: Таблицы фраз кешируются в памяти

  • Файлы: Таблицы фраз хранятся постоянно в JSON-файлах

  • Резервный вариант: Устаревший хэш-кеш для обратной совместимости

Инвалидация кеша

Мы инвалидируем кеш в случаях:

  • Обновления товаров: Инвалидация кеша товаров

  • Изменения запасов: Инвалидация кеша количества товаров

  • Обновления контента: Инвалидация кеша страниц

  • Обновления переводов: Инвалидация кеша переводов

Организация кеша

Кеши Valkey организованы по функциям:

  • Сессии: Состояние аутентификации пользователя

  • Автодополнение: Данные поисковых подсказок

  • Популярные запросы: Часто искомые термины

  • Сопоставления фраз: Данные для извлечения фильтров

  • Стоимости деталей: Данные для расчета цен

Итог

Наша стратегия кеширования обеспечивает:

  • Многоуровневость: Браузер, CDN, приложение, база данных

  • Эффективность: Valkey для быстрого доступа в памяти

  • Умное кеширование: Кеширование промптов ИИ для экономии затрат

  • Надежность: Несколько резервных механизмов