Вопрос про скорость работы – феном vs не феном
Нравится феном, но скорость нравится больше. Собственно вопрос к знатокам, что лучше: писать всё на феном, всё по старинке, или совмещать, оставляя тот вариант, который быстрее работает?
Пимеры:
P.s. Вопрос именно про то, как сниппеты вызывать.
Пимеры:
{!msMiniCart | snippet} – 9 – 0.0013354 – 0.0080540
[[!msMiniCart]] – 2 – 0.0004439 – 0.0057619
— {!officeAuth | snippet : Array ( [groups] => user ) } – 11 – 0.0016625 – 0.0151730
[[!officeAuth &groups=`user`]] – 3 – 0.0003973 – 0.0012989
Не рыл сильно глубоко, но думаю примеров с такой разницей можно еще достаточно найти.P.s. Вопрос именно про то, как сниппеты вызывать.
Комментарии: 7
На небольших сайтах разницы особо нет, выше 500-1000 ресурсов уже стоит переходить на Fenom — https://docs.modx.pro/components/pdotools/parser#Тестирование-производительности
Скорость фенома зависит от множество факторов, если разрабатывать сайты в админке — стандартный синтаксис быстрее, если брать файловую структуру, то феномовские файлы быстрее чем статичные ресурсы.
Условия же на феноме всегда быстрее
Что касается смешивания — смешивать точно не надо, во первых стандартный парсер запускается раньше, чем парсер фенома, из за чего сначала обработаются стандартные теги, во вторых рискуете нарваться на множество ошибок (например если плейсхолдер генерирует сниппет в стандартном парсере, то этот плейсхолдер не доступен для парсера фенома)
Ну а вообще на практике удобство и адекватный дебагер (в феноме) перевешивает скорость, к тому же на реальном проекте скорость отличается не значительно (прям очень не значительно).
Единственная рекомендация у фенома все плохо с вложенными чанками, по этому чем меньше вложенность — тем лучше, используйте лучше блоки
Условия же на феноме всегда быстрее
Что касается смешивания — смешивать точно не надо, во первых стандартный парсер запускается раньше, чем парсер фенома, из за чего сначала обработаются стандартные теги, во вторых рискуете нарваться на множество ошибок (например если плейсхолдер генерирует сниппет в стандартном парсере, то этот плейсхолдер не доступен для парсера фенома)
Ну а вообще на практике удобство и адекватный дебагер (в феноме) перевешивает скорость, к тому же на реальном проекте скорость отличается не значительно (прям очень не значительно).
Единственная рекомендация у фенома все плохо с вложенными чанками, по этому чем меньше вложенность — тем лучше, используйте лучше блоки
стандартный парсер запускается раньше, чем парсер фенома, из за чего сначала обработаются стандартные тегиНе путай человека.
Парсер MODX запускается перед феномом только для обработки кэшируемых тегов. Вообще парсинг выглядит так:
1. Запускается парсер MODX и обрабатывает кэшируемые теги. Феном теги остаются необработанные.
2. Запускается парсер фенома, если есть теги Fenom.
3. Запускается парсер MODX и обрабатывает некэшируемые теги пока они есть. Нераспарсенные не удаляются.
Пункты 2 и 3 могут выполняться в цикле до 10 раз, если есть нераспарсенные теги.
// В сниппет попадёт распарсенный тег феном
[[!snippet? param=`{$value}`]]
4. Запускается парсер фенома, если есть теги Fenom.5. Запускается парсер MODX и обрабатывает некэшируемые теги пока они есть. Нераспарсенные теги удаляются.
Пункты 4 и 5 пункт могут выполняться в цикле до 10 раз, если есть нераспарсенные теги.
Многие, наверно, обращали внимание на тормоза, если указан несуществующий плейсхолдер.
Выглядит эта конструкция, мягко говоря, как вид жопы сбоку. У этих парсеров разный принцип работы. По хорошему, разработчикам MODX нужно или вообще отказываться от парсера и просто дать возможность пользователям самим выбирать (я сделал маленький шажок в эту сторону) или дорабатывать его до более-менее функционального уровня (я это тоже пробовал).
Я бы посоветовал использовать оба парсера так:
— юзать только кэшируемые теги MODX ([[*tag]], [[$chunk]], [[++system]], [[snippet]]). Хорошо для оптимизации.
— для остального использовать феном.
В этих режимах парсеры не пересекаются.
Ого, круто, спасибо, я не ковырял исходники, а проверял эксперементальным путем, видимо когда эксперементировал как раз наткнулся на кейс с кэшируемыми тегами :)
Данные по запросам к БД вызывают сомнение. Почему они разные?
Сравнивать тысячные доли? Это даже не погрешность, это погрешность погрешности. Пять раз обнови страницу, и пять раз цифры будут разные даже не меняя код.
Я когда переходил не феном тоже сравнивал. Разницы в скорости при вызове сниппетов через стандартный синтаксис и через феном никакой.
Сравнивать тысячные доли? Это даже не погрешность, это погрешность погрешности. Пять раз обнови страницу, и пять раз цифры будут разные даже не меняя код.
Я когда переходил не феном тоже сравнивал. Разницы в скорости при вызове сниппетов через стандартный синтаксис и через феном никакой.
Разница в скорости меня тоже не сильно напрягает, потому-что действительно какие-то тысячные доли, а вот количество запросов к БД существенно отличается, а я не знаю почему.
Можно посмотреть на реально феномовый проект — dev.modx.pro
И на его исходники — github.com/bezumkin/ModxPro
На родном парсере MODX я такое и близко не сделаю.
И на его исходники — github.com/bezumkin/ModxPro
На родном парсере MODX я такое и близко не сделаю.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.