Василий, у меня трабл с getPage плиз хелп
Суть проста, вывожу getResources через getPage внутри чанка есть НЕ кэшируемый сниппет, но каким то раком у ПЕРВОГО элемента он все равно кэшируется.
Происходит сие где то после 60й строки в getPage
И выглядит так (допустим что в чанке самый простой сниппет <? date(H:i:s, time()) ?>) делаем вызов на странице, а после этой строчки делаем дамп, видно что данные первого элемента уже успели где то спарсится, я непонимаю откуда такое поведение =(
getPage вызываю с флагом cache=`1`, но не понимаю почему в первом элементе НЕкэшируемые сниппеты таки кэшируются.
Вся надежда на тебя stackoverflow молчит =(
Происходит сие где то после 60й строки в getPage
$elementObj->process($properties);
И выглядит так (допустим что в чанке самый простой сниппет <? date(H:i:s, time()) ?>) делаем вызов на странице, а после этой строчки делаем дамп, видно что данные первого элемента уже успели где то спарсится, я непонимаю откуда такое поведение =(
09:04:2013
...
[[!getDate]]
...
[[!getDate]]
getPage вызываю с флагом cache=`1`, но не понимаю почему в первом элементе НЕкэшируемые сниппеты таки кэшируются.
Вся надежда на тебя stackoverflow молчит =(
Комментарии: 23
Попробуй сделать чанк наоборот, кэшируемым.
Делал, я даже этот сниппет выносил в отдельный чанк, с поменткой не кэшировать, все равно тоже самое, причем на любой странице, то-есть первый элемент на каждой странице из getPage если в нем не кэшируемые сниппеты, все равно их кэширует. А у тебя такое поведение прослеживается? может у меня сборка глюкнула… не понимаю как такое может быть просто.
если вы вызываете getPage с флагом cache 1 то там как минимум еще 2 параметра которые влияют на результат которые желательно указать(тем более если у вас кэширование в память идет а не в файлы) Посмотрите вкладку параметры в снипете гет пейдж. Там для кэша есть параметры key и hendler поумолчанию они false
Может в этом дело
Может в этом дело
по умолчанию они
cache_key default: value of cache_resource_key setting
cache_handler default:value of cache_resource_handler setting, or xPDOFileCache
в принципе я пытался задавать, но толку мало, один отвечает всего лишь за директорию кэша, а второй точно не в тему =)
cache_key default: value of cache_resource_key setting
cache_handler default:value of cache_resource_handler setting, or xPDOFileCache
в принципе я пытался задавать, но толку мало, один отвечает всего лишь за директорию кэша, а второй точно не в тему =)
Проверил — всё верно, сниппет в чанке полюбому кэшируется.
Более того, мне на это жаловались, когда я выпускал Tickets, и там же быстро нашли решение:
То есть, запускать сниппет, как фильтр вывода — тогда он не кэшируется. Но вообще, это изврат, ибо выходит вот такой запуск: сниппет <= чанк <= getresources <= getpage
Я бы переписал на pdoTools, с получением всей нужной инфы в сниппете, чтобы в чанках только подставлялись пелейсхолдеры. Так быстрее и правильнее.
Более того, мне на это жаловались, когда я выпускал Tickets, и там же быстро нашли решение:
[[+id:snippet]]
То есть, запускать сниппет, как фильтр вывода — тогда он не кэшируется. Но вообще, это изврат, ибо выходит вот такой запуск: сниппет <= чанк <= getresources <= getpage
Я бы переписал на pdoTools, с получением всей нужной инфы в сниппете, чтобы в чанках только подставлялись пелейсхолдеры. Так быстрее и правильнее.
Спасибо Василий, только я немного не понял как это запускать сниппет, как фильтр вывода, вот например мой чанк скажем
<div class="thumbnail">
<div >
[[!nodeShop_getAddedItems:gt=`0`:show? &id=`[[+id]]`]] //Вот эта часть у меня почему то кэшируется
</div>
</div>
UPD, кажется я понял, я должен к какому нибудь параметру дописать как бы кастомный модификатор, который будет моим несчастным сниппетом, верно?
Ага.
Спасибо огромнейшее, я уже собирался переписывать по своему и чуть было не сошел с ума =), могу чем нибудь отблагодарить?
Оформи подписку, прочитай про pdoTools и перепиши всё по-человечески.
Первый в моей жизни Донэйт, спасибо еще раз.
У меня донейты полезные — можно взамен кучу информации прочитать.
На здоровье!
На здоровье!
Блин, у меня трабл, сделал так как посоветовали, теперь он кэширует все подряд, а при таком вызове [[!+id:snippet]] опять кэшируется первый элемент =(
причем заметил глюк, если вывести [[!+id]] не кэшированный, то у первого ресурса он определяется верно, а у остальных он заменяется на какой то произвольный и потом ваабще не меняется, выводится у всех один и тот же… бред какой то с этим гет пейдж
cache=`1` точно не забыл? потому что я сделал такой же сниппет и тоже вызвал как кэшируемый [[+id:snippet]] он сразу закэшировал все рандомы
А зачем мне cache=`1`?
Никогда им не пользовался. Все написал как есть. Ща создам сайтик на modx-test.com — там проверим.
Никогда им не пользовался. Все написал как есть. Ща создам сайтик на modx-test.com — там проверим.
Без cache=`1` то работает на отлично, но только вывод вместо 0.04000 => 3.0000- это же ад на локальном компе от 2 до 3х секунд рендер странички
Ты кэшируешь работу всего getPage и удивляешься тому, что он выводит кэшированные данные?
Пиши нормальный сниппет на pdoTools — будет без кэша и быстро. Быстрее я ничего не знаю — сам только им и пользуюсь.
На этом сайте, кстати, все комментарии и заметки выводятся без кэша через такой сниппет.
Пиши нормальный сниппет на pdoTools — будет без кэша и быстро. Быстрее я ничего не знаю — сам только им и пользуюсь.
На этом сайте, кстати, все комментарии и заметки выводятся без кэша через такой сниппет.
Ну насколько я понял, getPage кэширует не весь свой вывод, а только то что помечено как кэшируемое, тоесть если тэг [[! он его пропускает и отдает дальше по цепочке в парсер, тоесть сам кэш getPage выглядит так: (взято из оригинального кэша)
Все ресурсы, кроме первого отдали в getPage нативный код, а первый почему то отдает рендер =( почему не понимаю
.... .... ....
'output' => '<div class="thumbnail">
<div class="prodCounter" id="prod_160">
7
</div>
...
</div>
<div class="thumbnail">
<div class="prodCounter" id="prod_130">
[[!+id:nodeShop_getAddedItems]]
</div>
...
</div>
<div class="thumbnail">.... итд
Если присмотреться видно что кусок кэша сохранился уже отрендеренный, сфига — я непонимаюВсе ресурсы, кроме первого отдали в getPage нативный код, а первый почему то отдает рендер =( почему не понимаю
Не надо тратить время и пытаться запустить и гибко закэшировать вызов сниппета в чанке.
Потрать время и напиши уже свой сниппет, который будет сам проверять все значения и отдавать в чанк готовые данные.
Сейчас ты просто извращаешься. Если парсер MODX это позволяет — не значит, что так нужно делать.
Чанк — это html код, который оформляет результаты работы сниппета. Запускать из него сниппет — извращение.
Потрать время и напиши уже свой сниппет, который будет сам проверять все значения и отдавать в чанк готовые данные.
Сейчас ты просто извращаешься. Если парсер MODX это позволяет — не значит, что так нужно делать.
Чанк — это html код, который оформляет результаты работы сниппета. Запускать из него сниппет — извращение.
Потестил на хостинге с кэш 0 открывает за 0.4, с кеш 1 открывает за 0.1, в принципе терпимо, посмотрю как будет под нагрузкой, в конце концов свой сниппет таки напишу. П.С. видимо на виртуальной машине тяжко мускул работает поэтому разница больше.
Не, тут слабое место php и процессор, а не MySql.
Попробую виртуалке больше ресурсов выделить
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.