Наверх

Вечный кеш для чанков. Запрещаем удалять кеш даже по событию обновления сайта

Когда оптимизируешь сайт, понимаешь, что некоторые блоки обновляются очень-очень редко и хотелось бы такие блоки сгенерировать один раз, потом закешировать и так, чтобы даже при обновлении сайта их кеш не сбрасывался. В статье Оптимизация сайта на MODX Revolution - уменьшение времени загрузки страницы есть сниппет chunk, который помогает закешировать блоки с первого отображения и вплоть до внесения изменений на сайт. Сниппет longCache действует анологично, только создает кеш блока, который не очищается при каждом обновлении информации на сайте. Вызываем его так:
[[longCache? &name=`foreignMap`]]
Код самого сниппета:
<?php
if (!$output = $modx->cacheManager->get($name, ['cache_key' => 'chunks'])) {
    $output = $modx->getChunk($name, $scriptProperties);
    $maxIterations = (integer) $modx->getOption('parser_max_iterations', null, 10);
    $modx->getParser()->processElementTags('', $output, false, false, '', [], $maxIterations);
    $modx->getParser()->processElementTags('', $output, true, true, '', [], $maxIterations);
    $modx->cacheManager->set($name, $output, 0, ['cache_key' => 'chunks']);
}
return $output;
Этот сниппет я использовал, чтобы закешировать карту на сайте http://reabilitaciya-narcozavisimyh.ru/ (статья о сайте)


2 комментария

  1. Владимир Гришин 30 июля 2013, 18:25(Комментарий был изменён) # 0
    а когда он обновляется? ручками удаляется?
    $chunk = $scriptProperties['name'];
    а вот по этому поводы ты вроде говорил что это лишнее)))
    if (empty($cacheKey)) $cacheKey = $modx->getOption(
        'cache_scripts_key', null, 'name');
    так нельзя?)
    1. Илья Уткин 30 июля 2013, 18:29(Комментарий был изменён) # 0
      Да, ручками.

      $cacheKey — здесь это имя папки внутри cache, в которую и будут складываться файлики кеша. У меня внутри /core/cache/ есть папка /chunks/, где и лежит кеш таких чанков (каждый чанк в отдельном файле).

    Авторизация

    через сервис Loginza:


    Шаблоны MODX

    1 2 Дальше »

    Объектная
    модель
    MODX