Как сделать некешируемый вызов TV?

Добрый день!

Собственно весь вопрос в заголовке.
Есть страница, она кешируется, т.е по умолчанию стоит галочка «Кешируемый ресурс». В шаблоне этой страницы вызывается чанк [[!$Chank]]. В этом чанке вызывается TV-страницы [[!*TV1]], [[!*TV2]]. Так вот: кешируются эти TV и всё тут.

Ума не приложу, что делать. Если снять галочку «Кешируемый ресурс», то всё нормально работает. Но, ради пары динамичных цифр на странице убирать её всю из кеша — нелогично.

Что делать-то?

Спасибо за понимание!

P.S. TV меняю в сниппете, которых вызывается со страницы через ajax
P.P.S. Было предложено в этом сниппете вызывать clearCashe(). Не у верен, что это правильно. Хотя?!
Роман
Роман
29 апреля 2016, 16:58
modx.pro
2 091
Реклама

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

Илья Уткин
Илья Уткин Администратор
29 апреля 2016, 20:15
Так сделайте сниппет
[[!getTV? &name=`TV1`]]

return $modx->resource->getTVValue($name);
    Роман
    Роман Старожил
    29 апреля 2016, 20:38
    Илья, спасибо за совет. А штука со знаком восклицания с TV не прокатывает? [[!*TV]]
      Илья Уткин
      Илья Уткин Администратор
      29 апреля 2016, 20:49
      Ну, видимо, нет)))
        Воеводский Михаил
        29 апреля 2016, 20:58
        Она прокатывает, но сниппет вызывается уже после того, как заполняются значениями массивы со звездочками.
      Alex
      Alex Старожил
      25 января 2017, 15:28
      Илья, не работает
      Роман
      Роман Старожил
      29 апреля 2016, 21:06
      В общем, получается, что либо чистить кеш при каждой смене значения TV на странице, либо делать вызов TV через свой сниппет.

      Почистить кеш — одна строка в коде, но, наверное, кушает сколько-то ресурсов.
      Написать +1 сниппет не проблема, но как-то нелогично.

      clearCash() — много ресурсов кушает?
        Воеводский Михаил
        29 апреля 2016, 21:34
        Очистка кэша не слишком много ресурсов съест, но последующее его набивание намного более ресурсоемкое.
          Роман
          Роман Старожил
          29 апреля 2016, 21:49
          Спасибо. Понял. Значит, наш выбор — +1 сниппет :-)
            Сергей Шлоков
            Сергей Шлоков Старожил
            29 апреля 2016, 23:13
            Да и сниппет вряд ли поможет.
        Роман
        Роман Старожил
        30 апреля 2016, 08:34
        Сниппет не помог, что странно. Тогда вопрос исчерпан: чистим кеш и не паримся :-)
          Сергей Шлоков
          Сергей Шлоков Старожил
          30 апреля 2016, 12:11
          Ничего странного. И очистка кэша не поможет.
            Роман
            Роман Старожил
            30 апреля 2016, 21:21
            почему не поможет. Уже помогает. Всё работает
              Сергей Шлоков
              Сергей Шлоков Старожил
              30 апреля 2016, 22:21
              1. Браузер запрашивает страницу отправляя запрос на сервер.
              2. MODX формирует страницу — шаблон, чанки, спиппеты, плейсхолдеры, ТВшки. Дальше отдает назад браузеру.
              3. Браузер, получив ответ, отрисовывает страницу. По готовности DOM модели или по кнопке браузер выполняет ajax запрос, который что-то меняет на сервере.
              Вопрос, как измененные данные на сервере должны измениться в браузере (без яваскрипта)?
              Я видимо чего-то не понимаю.
              Кроме того
              Если снять галочку «Кешируемый ресурс», то всё нормально работает. Но, ради пары динамичных цифр на странице убирать её всю из кеша — нелогично.
              А вызывать метод чистки кэша при каждом запросе — это логично?
                Роман
                Роман Старожил
                30 апреля 2016, 22:42
                а-а-а, я понял в чем возникла непонятка. Я виноват, неверно объяснил вводную.

                Данные с помощью ajax ушли на сервер, вернулись, javascript'ом вставились куда надо. Всё хорошо. Дальше, жму F5 или перехожу на другую страницу, а потом возвращаюсь. Данные берутся из кеша, т.е. те, которые были до манипуляций с ajax. В этом и была загвоздка, что вроде должны опять обработаться сервером, потом отобразиться браузером… т.е. Ваши пункты 1,2,3, но всё было не так как надо :-)

                Поэтому, когда после ajax'а данные ушли на сервер, там обработались (+почистился кеш страницы), потом вернулись и вставились, жмем F5 и у нас грузится страница с нормальными данными.
                  Konstantin
                  Konstantin Старожил
                  01 мая 2016, 14:10
                  не кеш ли это браузера?
                    Роман
                    Роман Старожил
                    01 мая 2016, 17:04
                    Shift + F5 тоже не прокатывает
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          17