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

Логика работы

Между базовым репозиторием данных dataRepo и репозиторием данных с проверкой безопасности securedDataRepo внедрен репозиторий данных с поддержкой кеширования cachedDataRepo. Данные загружаются по цепочке: БД -> dataRepo -> cachedDataRepo -> securedDataRepo.

При этом, cachedDataRepo, при запросе, сначала проверяет наличие данных в кеше (если кеширование активировано), и если данных в кеше нет, запрашивает их у dataRepo, после чего помещает в кеш и отдает securedDataRepo.

Настройка кеширования объектов отдельных классов

Можно индивидуально в файле настроек конфигурации приложения (deploy.json), в опциях cachedDataRepo указать список классов, данные которых нужно хранить в кеше.

Пример:

...
"options": {
  "cachedClasses": ["class1@namespace", "class2@namespace", "class3@namespace"]
}
...

Если cachedClasses не указан, то кешируются все данные.

Кеширование списка объектов

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

При кешировании списка на основании его условий выборки (в т.ч. пагинации) формируется ключ, выполняется выборка и все полученные обьекты кешируются индивидуально, а список кешируется как массив идентификаторов обьектов. При выборке списка из кеша на основании этого массива из кеша выбираются соответствующие обьекты и формируется результирующий список.

Аналогично кешируются все объекты по ссылке и коллекции загружаемые жадно.

Настройка гибкого кеширования

Для расширенной конфигурации настроек кеширования (таких как, время хранения запросов, глубина хранения объектов в кеше и др.) применяется настройка гибкого кеширования объектов. Настройка гибкого кеширования задается в файле deploy.json в свойстве "di", в компонентах memcached и redis в опции connectOptions. Все нужные плейсхолдеры прописаны в файле config.json репозитория платформы.

NB: Глубина хранения обьектов в кеше соответствует глубине запроса обьектов из БД, то есть в обьекте хранится информация о его ссылках, а дальше в кеше получается граф обьектов, а не дерево.

Настройка кеширования через ini файл приложения

Параметры ini файла:

...
cache.module=redis // - модуль используемый репозиторием данных для кеширования.
//(варианты: ion://memcached, ion://redis, ion://innerCache)

cache.memcached.enabled=true // активируем memcached
cache.memcached.location1 // сервер1
cache.memcached.location2 // сервер2
cache.memcached.timeout // таймаут обращения к кэшу

cache.redis.enabled=true // активируем redis
cache.redis.host=127.0.0.1 // хост redis
cache.redis.port=6379 // порт redis

session.type=redis // хранение сессий авторизации в redis

По умолчанию кеширование не используется.