Небольшая доработка системы кэширования MODx 1.0.5
Система кэширования в MODx 1.0 достаточно хорошо справляется со своей работой, если на сайте не слишком много страниц, примерно до пяти тысяч. Решение проблем больших сайтов в данной статье не рассматривается, а всего лишь предлагается пара дополнительных средств, позволяющих улучшить работу с кэшем.
Если страница описана как кэшируемая, кэш будет создаваться при любом ее вызове, в том числе и при просмотре страницы менеджером, работающем в административной части MODx. Однако страницы сайта, генерируемые для менеджеров, могут отличаться от страниц, просматриваемых посетителями. Элементы, доступные только менеджерам, не надо записывать в кэш, и для этого достаточно добавить простейший плагин, отменяющий кэширование страниц, просматриваемых менеджерами. Создайте плагин и поместите в него расположенный ниже код, а также задайте для плагина событие OnLoadWebDocument. Теперь кэширование страниц будет происходить только при их просмотре обычными посетителями.
$e =& $modx->event;
switch ($e->name ) {
case 'OnLoadWebDocument':
if ($modx->isFrontend() && isset ($_SESSION['mgrValidated']))
$modx->documentObject['cacheable'] = 0;
break ;
default:
return ;
}
Порой требуется создать кэш для всех страниц сайта до того, как эти страницы начнут просматривать посетители. Такая задача чаще всего возникает при большой нагрузке на хостинг и существенном различии времени генерации кэшированных и некэшированных страниц. После очистки кэша можно запустить процедуру генерации нового кэша, чтобы посетители просматривали только кэшированные страницы. Для реализации этой задачи можно использовать специальный модуль. Скачайте модуль кэширования и поместите все файлы из архива в папку assets/modules. Далее создайте модуль, поместив в него содержимое файла cacheAllPages.tpl. Если добавить нужные файлы в папку assets/modules до установки MODx, а также добавить файл cacheAllPages.tpl в папку install/assets/modules, модуль будет автоматически установлен вместе с другими компонентами MODx. Следует обратить внимание, что в модуль были внесены незначительные изменения для совместимости с версией MODx 1.0.5.
Для выполнения процедуры кэширования всех страниц сайта следует запустить модуль и нажать кнопку «Создать кэш». Процесс иллюстрируется прогресс-индикатором. В любой момент можно выйти из модуля, нажав кнопку «Закрыть модуль», и в следующий раз кэшировать оставшиеся страницы. Прерывание работы модуля любым способом в любое время не должно нарушить работу сайта. Кэшируются все опубликованные и не удаленные страницы, помеченные как кэшируемые, ранее не кэшированные, не ограниченные к просмотру.