Кэширование в pdotools

вобщем столкнулся с проблемой, кто нельзя отключить файловое кэширование в pdotools на конкретные ресурсы. Если снять галочку кэширования ресурса, то кэша нет в папке resource, а вот кэш pdotools присутствует. может быть кто нибудь знает есть ли параметр отключения?
Евгений
18 апреля 2022, 10:37
modx.pro
104
0

Комментарии: 11

vectorserver
19 апреля 2022, 06:26
0
&cache        0    	Кэширование результатов работы сниппета.
&cacheTime    3600	Время актуальности кэша, в секундах.
&cache_user    1	Принудительно устанавливает ID посетителя, по-умолчанию кеширование производится с учетом ID посетителя
    Евгений
    19 апреля 2022, 14:25
    0
    не совсем понял что у вас написано
      vectorserver
      19 апреля 2022, 15:26
      0
      Вы просили параметры отключения, я скинул! Что не так!?
      Прочитайте нормально документацию по Pdotools!
        Евгений
        19 апреля 2022, 15:59
        0
        вопрос был в отключении кэша отдельного ресурса
      Евгений
      19 апреля 2022, 14:24
      0
      Это очень круто, почитал, думаю стоит изучить и внедрить, но быстро мигрировать тем более на бетта версию не выйдет :(

      вообще то что получил сейчас это очень большой кэш в папке default/pdotools, на одну страницу приходится по 2 файла кэша, а с учетом того что у меня много ресурсов, + много виртуальных страниц, весь объем диск съедаю за раз. кэшировать все необходимости нет, только посещаемые страницы. но отключить кэш или принудительно включить не могу. в настройках есть только общая настройка pdotools_fenom_cache, отключив которую кэш не формируется, но и основные страницы работают медленно. Как вариант переписать xpdocachemanager.class.php, но там объект modx не содержит ресурса, и управлять кэшированием например через стандартную настройку ресурса возможности нет.
        Сергей Шлоков
        19 апреля 2022, 20:00
        0
        Это обычная системная настройка. Ей можно манипулировать в процессе загрузки. Создайте плагин на событие OnHandleRequest и в нем прописывайте нужное значение согласно вашей логике
        if ($modx->resource->id == 100) {
            $modx->setOption('pdotools_fenom_cache', false);  // отключить кэширование чанков для ресурса 100
        }
          Евгений
          20 апреля 2022, 08:57
          0
          Неработает, тк в классе pdoTools в setConfig устанавливается
          $this->config['useFenomCache'] = $this->modx->getOption('pdotools_fenom_cache', null, false);

          До вызова OnHandleRequest

          и уже проверка идет в методе fenom
          if (!empty($this->config['useFenomCache'])) {

          Поэтому установка этого свойства конечно меняет конфиг, но fenom его читает раньше
            Сергей Шлоков
            20 апреля 2022, 16:27
            0
            Да, есть такое дело. Хотел исправить и забыл. В следующей версии постараюсь не забыть.
              Евгений
              20 апреля 2022, 17:13
              0
              попробовал решить так в плагине, но не работает, может подскажите костыль
              case 'OnHandleRequest':
                     if ($modx->resource->cacheable == false) {
                      $pdoTools = $modx->getService('pdoTools');
                      $pdoTools->config['useFenomCache'] = null;
              }
            Евгений
            20 апреля 2022, 11:45
            0
            Судя по стэктрейсу

            string(810) "#0 /usr/share/nginx/www/core/components/pdotools/model/pdotools/pdotools.class.php(45): pdoTools->setConfig(Array) #1 /usr/share/nginx/www/core/components/pdotools/model/pdotools/pdoparser.class.php(24): pdoTools->__construct(Object(modX)) #2 /usr/share/nginx/www/core/xpdo/xpdo.class.php(1236): pdoParser->__construct(Object(modX), Array) #3 /usr/share/nginx/www/core/model/modx/modx.class.php(719): xPDO->getService('parser', 'pdoParser', '/usr/share/ngin...') #4 /usr/share/nginx/www/core/model/modx/modelement.class.php(566): modX->getParser() #5 /usr/share/nginx/www/core/model/modx/modx.class.php(1673): modElement->getProperties() #6 /usr/share/nginx/www/core/model/modx/modx.class.php(568): modX->invokeEvent('OnMODXInit', Array) #7 /usr/share/nginx/www/index.php(50): modX->initialize('web') #8 {main}"

            после события OnMODXInit
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11