Skip to content

Кеширование

Для осуществления кеширования используется класс \Realweb\Api\Model\Main\Cache.

Параметры

Перед получением/сохранением данных необходимо установить параметры: id кеша, директория кеша, теги сброса

php
use Realweb\Api\Model\Main\Cache;

Cache::getInstance()
	->setId($this->getPagination()) //Автоматическая сериализация
	->setDir(__CLASS__) //Директория хранения
	->addTag('cache-tag') //Тег сброса

Теги инфоблоков

Для установки тега кеширования для инфоблока, модель базы данных обладает методом getCacheTag

php
use Realweb\Api\Model\Main\Cache;
use Realweb\Api\Module\Catalog;

Cache::getInstance()->addTag(\Catalog\Model\Element\Database::getCacheTag());

Практическое использование

Основной метод получения/сохранения данных get. В качестве параметра принимается функция callback получения данных, которая возвращает массив с данными

php
use Realweb\Api\Model\Main\Cache;

Cache::getInstance()
  ->setId($this->getPagination())
  ->setDir(__CLASS__)
  ->addTag('cache-tag')
  ->get(fn () => $this->_getList($this->getPagination()));

protected function _getList(Pagination $obNav): array
{
  $obCollection = $this->_getDataBase()::getObjectCollection($obNav);
  return array(
    'collection' => $obCollection,
    'pagination' => $obNav->toJson(),
  );
}

Кеширование в двоичном представлении.

Для более эффективного хранения и чтения файлов кеша рекомендуется использовать кеширование в двоичном представлении. Для этого в настройках сайта следует указать путь к классу кеша

Подробнее про функцию igbinary_serialize

php
\\ bitrix/.settings.php
return array(
  ...
  'cache' =>
  array (
    'value' =>
    array (
      'type' =>
      array (
        'class_name' => '\\Realweb\\Api\\Model\\Main\\Cache\\File\\Bitrix',
        'required_file' => '/modules/realweb.api/lib/Model/Main/Cache/File/Bitrix.php',
      ),
      'sid' => $_SERVER['DOCUMENT_ROOT'].'#01',
    ),
  ),
)