Кэширование своих сниппетов через 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')
Получаем данные для кэша по имени.
Это лишь краткая и базовая инструкция, более подробно читайте в официальной документации.
Оставить комментарий