Перейти к основному содержимому

Работа с Runtime Cache

Pimcore активно использует runtime-кэширование для сохранения результатов работы API в целях повышения производительности. Однако критически важно понимать, как работать с кэшированными результатами, чтобы через API всегда использовались корректные и актуальные данные. Рассмотрим несколько примеров для понимания подобных ситуаций:

//Удаление элемента из списка 
$list = new \Pimcore\Model\DataObject\Myclassname\Listing;
//или
$list = new \Pimcore\Model\Document\Listing;
//или
$list = new \Pimcore\Model\Asset\Listing;
$list->load();
$list->current()->delete(); //Удаляем текущий элемент из списка

$list->load(); //Вызываем load() снова, чтобы сбросить runtime-кэш и обновить список

foreach ($list as $element) {
...
}

//использование параметра force для загрузки последних данных из базы данных
\Pimcore\Model\DataObject::getById(123) === \Pimcore\Model\DataObject::getById(123) => true

\Pimcore\Model\DataObject::getById(123) === \Pimcore\Model\DataObject::getById(123, ['force' => true]) => false

Использование большого количества объектов в одном процессе может привести к ошибке «нехватка памяти» (not enough memory). Это часто случается при итерации через тысячи объектов при их чтении или создании. Пожалуйста, обратитесь к этому разделу, чтобы решить проблемы с памятью, которые также очищают кэш выполнения вместе с задачами.


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