Jump to main content Jump to doc navigation

Данная страница предназначена для демонстрации некоторых основных принципов работы с менеджером кэша xPDO / MODX и того, как его можно использовать для написания более эффективных сниппетов.

Создадим наши сниппеты

Сниппет №1: запись в кэш

Вот наш первый сниппет с названием cacheWrite:

$cacheManager = $modx->getCacheManager();
$x = date('H:i:s');
$cacheManager->set('my_cache_key',$x);
return $x;

Помните, что нам нужно использовать переменную $x в качестве посредника, поскольку cacheManager опирается на ссылочные переменные. Вы не можете просто передать ему статическое значение.

Этот сниппет кода просто сохраняет текущую временную метку в кэше с именем ключа «my_cache_key». Поместите этот сниппет (КЭШИРУЕМЫЙ) на страницу вашего сайта, например, на странице с названием «Страница 1»:

[[writeCache]]

Сниппет №2: чтение из кэша

Далее мы создадим простой сниппет с названием readCache, который будет читать значения из кэша:

$cacheManager = $modx->getCacheManager();
return $cacheManager->get('my_cache_key');

И поместите этот сниппет (НЕКЭШИРУЕМЫЙ) на другую страницу вашего сайта, например, на странице с названием «Страница 2»:

[[!readCache]]

Посмотрим на наши сниппеты

  1. Сначала перейдите к «Страница 1» (или просто просмотрите эту страницу на своем сайте). Вы должны увидеть обычную временную метку, например, «11:44:55».
  2. Затем перейдите к «Страница 2» на вашем сайте в отдельной вкладке браузера. Вы должны увидеть ту же метку времени, например, «11:44:55». Даже если вы подождете 5 минут, отметка времени не должна измениться.

Очистите кэш сайта (Сайт / -> Очистить кэш), а затем повторите этот процесс. Что вы видите?

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

Попробуйте следующее:

  1. Очистите кэш сайта
  2. Посетите «Страница 2». Что происходит?

Вы должны заметить, что «Страница 2» и сниппет readCache ничего не возвращают, когда кэш пуст, поскольку сниппет writeCache ещё ничего не записал в кэш.

Далее попробуйте следующее:

Отредактируйте «Страница 1», чтобы она вызывала некэшируемый сниппет writeCache

[[!writeCache]]
  1. Посетите «Страница 1» в браузере. Обратите внимание на отметку времени.
  2. Обновите «Страница 1». Обратите внимание, что отметка времени обновляется.
  3. Зайдите на «Страница 2» в браузере. Какую временную метку она показывает?

Вы увидите, что «Страница 2» в этом сценарии всегда будет отображать отметку времени с момента последнего обращения к «Страница 1».

Резюме

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