Все для создания и продвижения сайтов

Верстка, программирование, SEO

Кэширование своих сниппетов через XPDO в MODX Revo

Хочу обсудить очень важный момент и до жути простой, который поможет вам ускорить сайт при написании своих сниппетов.

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

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

Поэтому, если наш сниппет выполняется за 3 секунды, а потом вы его кэшируете и он будет срабатывать за 0.001, что приятно.

Покажу вам как легко и просто выполнить кэширование своих сниппетов.

Пример:

Предположим вы в своём сниппете получаете какие то данные (как раз те, что вы можете получать за несколько секунд) и вы их записываете в переменную $output и потом возвращаете.

В XPDO для этого есть "cacheManager", мы воспользуемся его двумя методами "set" и "get".

Вот как кэшировать:

// Если кэш есть, то мы записываем его в $output
if (!$output = $modx->cacheManager->get('cacheVarName')) {
    // Если кэша нет, то мы тут получаем свои данные и записываем их в $output
    // И затем записываем $output в кэш
    $modx->cacheManager->set('cacheVarName', $output, 3600);
}
return $output;

Некоторым для восприятия этот код будет проще.

if ($modx->cacheManager->get('cacheVarName')) {
    // Если есть кэш
    $output = $modx->cacheManager->get('cacheVarName');
}else{
    // Если кэша нет
    // Получаем $output
    $output = 'Наша переменная';
    // Запись в кэш
    $modx->cacheManager->set('cacheVarName', $output, 5);
}

return $output;

Кратко поясню:

$modx->cacheManager->set('cacheVarName', $output, 3600);
  • cacheVarName - название переменной для кэша;
  • $output - что передаём в кэш;
  • 3600 - время жизни кэша.
$modx->cacheManager->get('cacheVarName')

Получаем данные для кэша по имени.

Это лишь краткая и базовая инструкция, более подробно читайте в официальной документации.

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.