Modx очистить кэш вручную

Обновлено: 04.07.2024

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

Правило относительно того, что нужно помещать в кэш достаточно простое : пусть MODX помещает в кэш контент, который редко меняется. Если у вас страница, на которой отображается текущее время, и эта страница помещается в кэш, каждый посетитель сайта увидит время, которое было при первом посещении этой страницы вместо текущего времени. Такая ситуация будет иметь место до очистки кэша.

Кэширование управляется двумя способами. Кэширование ресурсов MODX управляется при помощи двух флажков в панели управления страницей "Настройки" в разделе Создания/Редактирования ресурса. Если вы выключите флажок "Кэшируемая" ("Cacheable"), MODX будет создавать новую версию страницы всякий раз, когда кто-то посещает ее. Если флажок "Очистить кэш" установлен (значение по умолчанию), кэш будет очищаться при сохранении страницы.

Для всех тегов MODX (включая теги для сниппетов, чанков и tv-параметров) управление кэшированием выполняется посредством задания формата тега. Если после открывающих квадратных скобок указан восклицательный знак, то данный объект не учавствует в кэшировании. Если восклицательного знака нет, объект кэшируется. Восклицательный знак означает "дайте мне свежую версию этого". Если содержимое чанка меняется редко, вы можете разрешить MODX кэшировать его, используя, например, такой тег :

Вы можете очищать кэш MODX вручную всякий раз, когда вы изменяете содержимое чанка. Сниппеты часто создают в разное время различные выходные данные. В этих случаях лучше отключить кэширование :

Нужно помнить, что кэширование различных элементов в MODX Revolution выполняется независимо. Для приведенного выше примера относительно страницы, отображающей текущее время, текущее время вероятно будет вычислено, форматировано и отображено определенным сниппетом (назовем его ShowTime). Если остальная часть страницы никогда не изменяется, вы можете установить кэширование для этой страницы, но вызывать сниппет вот этим тегом :

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

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

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

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

Правило относительно того, что нужно помещать в кэш достаточно простое: пусть MODX помещает в кэш контент, который редко меняется. Если у вас страница, на которой отображается текущее время, и эта страница помещается в кэш, каждый посетитель сайта увидит время, которое было при первом посещении этой страницы вместо текущего времени. Такая ситуация будет иметь место до очистки кэша.

Кэширование управляется двумя способами. Кэширование ресурсов MODX управляется при помощи двух флажков в панели управления страницей «Настройки» в разделе Создания/Редактирования ресурса. Если вы выключите флажок «Кэшируемая» («Cacheable»), MODX будет создавать новую версию страницы всякий раз, когда кто-то посещает ее. Если флажок «Очистить кэш» установлен (значение по умолчанию), кэш будет очищаться при сохранении страницы.

Для всех тегов MODX (включая теги для сниппетов, чанков и tv-параметров) управление кэшированием выполняется посредством задания формата тега. Если после открывающих квадратных скобок указан восклицательный знак, то данный объект не учавствует в кэшировании. Если восклицательного знака нет, объект кэшируется. Восклицательный знак означает «дайте мне свежую версию этого». Если содержимое чанка меняется редко, вы можете разрешить MODX кэшировать его, используя, например, такой тег:


Вы можете очищать кэш MODX вручную всякий раз, когда вы изменяете содержимое чанка. Сниппеты часто создают в разное время различные выходные данные. В этих случаях лучше отключить кэширование:


Нужно помнить, что кэширование различных элементов в MODX Revolution выполняется независимо. Для приведенного выше примера относительно страницы, отображающей текущее время, текущее время вероятно будет вычислено, форматировано и отображено определенным сниппетом (назовем его ShowTime). Если остальная часть страницы никогда не изменяется, вы можете установить кэширование для этой страницы, но вызывать сниппет вот этим тегом:


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

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

Доброго времени суток!
Столкнулся проблемой — не удаляются файлы кэш (assets/cache/).
При нажатии кнопки «Очистить кэш» система сообщает:

При этом, на самом деле этого не делает, т.е. по адресу «assets/cache/» всё ещё присутствуют файлы типа «docid_XX.pageCache.php».
Сейчас приходится вручную удалять всё по FTP, что весьма уже утомляет.
Что уже делал:
1) Перепроверил доступ к папке «assets/cache/» и содержащимся в ней файлы — 777;
2) Пробовал перезаливать и вновь устанавливать систему MODx скаченную с официального сайта;
3) Путь к файлам и файл-менеджера сбрасывал, всё тщетно… т.е. файл-менеджер работает (заливает файлы как и положено).

Произошло это после обновления MODx Evo с 1.0.10 на 1.0.12. На старой версии, так что 1.0.10, кэш нормально очищался.
Буду очень признателен за советы в решении проблемы.

P.S. Хостинг работает на ОС Debian GNU/Linux и панелью управления Parallels Plesk Panel

Комментарии (5)

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


Прежде всего, спасибо за внимание! Однако к большому сожалению сменить хостинг не представляется возможным. Жаль, что эта досадная неприятность замечена не сразу после обновления, а уже после добавления достаточного количества ресурсов, а так бы откатил на 1.0.10 :-(
Кстати, вот что пишется в разделе «Системная информация»:

Пути же правильно вроде выставлены?

Запустите сайт на локалке если сможете и посмотрите удаляются файлы или нет. Может дело в каком-то функционале накрученном (плагины там например какие-нибудь), который оказался несовместим с обновлением.

Логи тоже надо обязательно посмотреть + настроить уровень вывода ошибок PHP чтобы в логи все ошибки падали


Ерунда какая-то… :-(
Зашёл в «Управление файлами» пишет:

Т.е. файловый менеджер не видет содержимого, хотя имеет права за запись.


Перенёс на локальный хост — ситуация изменилась, теперь панель управления вообще перестала нормально прогружаться, т.е. открывается только верхнее меню не прогружая дерево сайта и ничего не отобража в основной части экрана (размер сайта

Для добавления комментариев вы должны авторизоваться или зарегистрироваться.

Если Вы сделали несколько сайтов на Modx, то скорее всего уже сталкивались с проблемой кэширования и корректной очистки кэша. Ниже показывается, как работает кэш Modx и как создать плагин для очистки кэша одного ресурса.

Файловый кэш по умолчанию в Modx Revo работает не всегда так, как нам хочется. Что именно не так?

За кэширование документов в Modx отвечают 2 галочки на вкладке Настройки. Если отмечена галочка "Кэшируемый", а она отмечена по умолчанию, то при первом обращении к документу для него сохранится кэш в файле, из которого чтение будет происходить заметно быстрее. Если, конечно, у Вас не статичная страничка с чистым html. Отметив галочку "Очистить кэш", мы задаем принудительную очистку для того, чтобы при следующем обращении к ресурсу кэш пересоздался заново, и посетители сайта увидели сделанные нами изменения.

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

Все, что нам нужно, это создать плагин для очистки кэша конкретного ресурса при сохранении документа. При этом кэш других документов должен оставаться нетронутым. Решение подсмотрено у Василия Безумкина и немного расширено под наши нужды.

Итак, сам плагин. Нужно создать его под любым именем и назначить ему системные события OnDocFormRender и OnDocFormSave. На первом событии мы отключаем параметр "Очистить кэш". Можете убедиться в этом, включив плагин и открыв в админке любой документ - галочка будет снята. Второе событие вызывает код, очищающий кэш текущего документа.

Все работает отлично! Но теперь давайте посмотрим чуть дальше.

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

Читайте также: