Как очистить кэш в MODx? Кэширование в modx

В системе modx предусмотрено кэширование документов. Если не вдаваться в подробности, то это значит, что данные, необходимые для формирования страницы сохраняются из базы данных в отдельный файл, к которому в дальнейшем происходит повторное обращение.

Как очистить кэш в MODx?

Самый простой и часто встречаемый ответ - зайти в админку по адресу /manager/ (что делать, если при входе в админку modx открывается ispmanager) и нажать ссылку “Очистить кэш“.

MODx Evo clear_cache - программная очистка кэша

Однако, при разработке различных модулей, дополнений и плагинов может потребоваться очищать кэш программно, то есть средствами PHP. Аналогично программной очистке кэша в Amiro, возможна реализация и для системы управления MODx.

Для программной очистки кэша MODx (для EVO) можно использовать небольшую функцию, которая задействует “стандартные” средства системы:

/**
* Очистка кэша MODx
*/
function api_clear_cache()
{
include_once $_SERVER[’DOCUMENT_ROOT’] . “/manager/processors/cache_sync.class.processor.php”;
$sync = new synccache();
$sync->setCachepath($_SERVER[’DOCUMENT_ROOT’] . “/assets/cache/”);
$sync->setReport(true);
$sync->emptyCache();
}

Как отключить кэширование в MODx

Конечно, для некоторых страниц в кэшировании необходимости нет, некоторые страницы и разделы при кэшировании теряют функционал. Настраивается кэширование как для отдельного документа (галочка “Кэшировать” на вкладке Настройка страницы), так и для любого сниппета (зачем каждый раз формировать данные, если они не изменяются?) - вызов сниппета в виде [[SnippetName]] ([!SnippetName!] -вызов без кэширования)

Очень часто неправильный тип вызова становится причиной некорректной работы сниппета (не работает разбивка на страницы, например)

Как отключить очистку кэша в MODx?

По умолчанию при каждом сохранении документа (как нового так и уже существующего) modx производит очистку кэша. Действительно, пока кэш не будет очищен, система будет брать данные из “устаревших” кэш файлов. Причем удалять надо все файлы - иначе данные в некоторых сниппетах (например, Ditto) будут взяты из кэша.

Иногда, при редактировании или добавлении нескольких документов подряд гораздо удобнее не очищать каждый раз текст, а после всех изменений “накатить” новую версию.

mm_default('clear_cache', '0', '', '3', '0'); // 3 - номер шаблона
mm_default('clear_cache', '0', '', '', '0'); // или для всех шаблонов по умолчанию

альтернативный вариант от пользователя Kollad
http://modxcms.com/forums/index.php/topic,50843.msg295768.html#msg295768

Немного хакнув /plugins/managermanager/functions/fieldvalues.inc.php строка
$allowed_actions = array('85','4','72');
заменил на
$allowed_actions = array('85','4','72','27');
где, 27 = Editing document (manager/includes/actionlist.inc.php);

Метки:

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

Комментарии (2) к записи “Как очистить кэш в MODx? Кэширование в modx”

  1. Сергей сообщает :

    Все отлично меня интересует обновление кэша снипета в установленное время суток. Если есть такой скрипт было бы хорошо

  2. levik сообщает :

    Сергей, очистка кэша в определённое время возможна. В зависимости от версии MODx, решение будет различным. Для Revo, например:

    $modx->executeProcessor(array(
    'location' => 'system',
    'action' => 'clearCache',
    ));
    return '';

Добавить комментарий