Наверх

Как не чистить кэш всего сайта?

В разделе «Репосты» расположены чужие статьи, которые мне понравились или показались полезными.

Постоянно задают вопросы «а как при сохранении чистить кэш не всего сайта, а только обновляемого ресурса?». А вот так:
<?php
switch($modx->event->name) {
  case 'OnDocFormRender':
	$resource->set('syncsite', 0);
  break;
  
  case 'OnDocFormSave':
    if ($modx->event->params['mode'] != 'upd') {return;}
    $resource->_contextKey = $resource->context_key;
    $cache = $modx->cacheManager->getCacheProvider($modx->getOption('cache_resource_key', null, 'resource'));
    $key = $resource->getCacheKey();
    $cache->delete($key, array('deleteTop' => true));
    $cache->delete($key);
  break;
}

Создать плагин с любым именем, назначить ему события OnDocFormRender и OnDocFormSave, скопипастить.

Первое событие плагина убирает галочку «Очистить кэш» у формы редактирования ресурса. Если включить ее вручную — кэш будет очищен, как обычно.
Второе — получет обработчика кэша ресурсов и говорит ему удалить запись нужного документа. Все остальные не трогаются.

У простых ресурсов кэш хранится в одном файле, у сложных (где вызываются кэшируемые сниппеты) — в директории. Поэтому, мы чистим сначала директорию, а потом и файл, чтобы наверняка.

С компонентом Articles этот фокус не работает — там нет syncsite в админке.

Источник: bezumkin.ru/sections/tips_and_tricks/351/


0 комментариев

    Авторизация

    через сервис Loginza:


    Шаблоны MODX

    1 2 Дальше »

    Объектная
    модель
    MODX