Appearance
Кеширование
Для осуществления кеширования используется класс \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',
),
),
)