Какой способ с FENOM быстрей? циклы или снипеты?

Друзья, начал изучать FENOM, шаблоны в файлах и тд, понимаю и реально быстрей, видел сравнение парсера таблицу, что при большом количестве парсер FENOM все равно быстрей, пусть и немного, но не могу понять одного, быстрей через снипет, или напрямую быстрей через foreach?

Как быстрей, так
[[getImageList?
  &docid=`[[+id]]`
  &tvname=`address`
  &tpl=`tpl.address`
]]
Или так
{'!getImageList' | snippet : [
'tpl' => 'tpl.addressl',
'tvname' => 'address',
'docid' => $id,
]}

Или так
{set $address = json_decode($id | resource : 'address', true)}
{if $address}
{foreach $address as $item}
{$item.title}
{/foreach}
{/if}
Но через foreach я так понимаю есть один минус, нет работы с кешем как в снипете.

И есть еще такой вариант
{set $items = $_modx->runSnippet('!pdoMenuFenom', [
    'parents' => 0,
    'displayStart' => true,
    'toArray' => true,
])}
{foreach $items as $item}
    {set $item['level'] = 1}
            {$_modx->getChunk('@FILE chunks/menu/topMenu.tpl', ['item'=>$item])}
{/foreach}
Роман
24 января 2020, 22:41
modx.pro
579
0

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

Наумов Алексей
27 января 2020, 09:07
1
+1
В данном примере интереснее 3-й вариант, т.к. нет лишних чанков, вызовов сниппетов, он читабелен сразу. Думаю и работает он быстрее.
Но если бы в чанке tpl.addressl был слоооооожный, медленный код, то интереснее было бы вызывать кешированный сниппет.
    Степан Прищепенко
    27 января 2020, 09:19
    1
    0
    3-й не кешируется преобразуется в чистый php — думаю быстрый, 2-й не помню вроде для сниппетов работало отключение кеша через "!", хотя не факт. 1-й как только на сформированной странице присутствует "[[" это увеличивает время парсинга в несколько раз и не важно плейсхолдер это, сниппет или кусок js кода. Так что я за 3-й.
      Юрий
      27 января 2020, 13:45
      0
      При желании закешировать можно всё.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        3