Многие разработчики, что делают свою сниппеты, их не кэшируют, теряют скорость сайта, а эти сниппеты могут выполняться за несколько секунд (ну если уж очень крутой), даже если и выполняется и за 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')Получаем данные для кэша по имени.
Это лишь краткая и базовая инструкция, более подробно читайте в официальной документации.
Источник: daruse.ru/keshirovanie-svoix-snippetov-cherez-xpdo-v-modx-revo
0 комментариев