hello@kakorin.com

Очистить кэш ресурса [MODX]

php
20 фев 2019

Ситуаци бывают разные, мы рассмотрим одну конкретную.

Например: мы добавили собственное поле view в таблицу site_content по примеру, создали плагин по примеру, и всё хорошо, всё работает.

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

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

// получаем массив с данными ресурса, например 123
$resource=$modx->getObject('modResource',123);
// запоминаем кэш ключ ресурса
$cacheKey=$resource->getCacheKey();
// по кэш ключу пересоздаем файлы кэша
$modx->cacheManager->refresh(array(
    'resource' => array('key' => $cacheKey),
));

Если необходимо очистить кэш многих ресурсов, то впринципе всё тоже самое.

// получаем массив с данными ресурсов, например 123 и 321
$resources=$modx->getCollection('modResource',array(
    'id' => array(123,321)
));
foreach ($resources as $key => $resource) {
    // запоминаем кэш ключ ресурса
    $cacheKey=$resource->getCacheKey();
    // по кэш ключу пересоздаем файлы кэша
    $modx->cacheManager->refresh(array(
        'resource' => array('key' => $cacheKey),
    ));
}