Сравнение скорости работы Wayfinder и pdoMenu
Вопросы к знатокам modx.
Поставил дополнение debugParser.
Смотрю скорость генерации меню (см. картинку)

Все 4 пункта делают одно и то же.
строка 2 — Wayfinder, вызов которого стоит на сайте
строка 3 — вызов pdoMenu с INLINE-шаблонами
строка 4 — вызов pdoMenu, используя синтаксис Wayfinder
строка 5 — вызов pdoMenu, используя синтаксис pdoMenu
Вопросы:
1. почему INLINE-шаблоны медленнее?
2. как-нибудь можно еще ускорить парсинг? Парсинг pdoMenu быстрее в 3 раза, но 1,5 секунды на генерацию меню — перебор.
Поставил дополнение debugParser.
Смотрю скорость генерации меню (см. картинку)
Все 4 пункта делают одно и то же.
строка 2 — Wayfinder, вызов которого стоит на сайте
строка 3 — вызов pdoMenu с INLINE-шаблонами
строка 4 — вызов pdoMenu, используя синтаксис Wayfinder
строка 5 — вызов pdoMenu, используя синтаксис pdoMenu
Вопросы:
1. почему INLINE-шаблоны медленнее?
2. как-нибудь можно еще ускорить парсинг? Парсинг pdoMenu быстрее в 3 раза, но 1,5 секунды на генерацию меню — перебор.
Комментарии: 9
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
А то вдруг окажется, что каждый следующий вызов работает быстрее предыдущего из-за кэша БД или еще чего другого.
Но прочитав его, расстроился. Причем тут скорость работы БД и ее кеша, если время работы парсера во много раз медленнее (или я цифры в колонках не так трактую?).
Но делать нечего, раз говорят, что нужно каждый вызов самостоятельно, то пошел отдельно запустил (попутно выкинул со страницы вообще все, кроме данного вызова).
Построение меню с помощью Wayfinder:
То же меню с pdoMenu:
Дальше пошел посмотрел, а что так парсер медленно работает.
Нашел в файле /core/components/pdotools/model/pdotools/pdomenu.class.php в строках 190 и 194 вызов
$this->modx->makeUrl(...)
Заменил 194-ю строку
с
на что-то подобное:
Получил следующую скорость:
В 3,5 раза быстрее!
Отсюда вопрос. Можно ли (и могут ли авторы) переписать вызов $this->modx->makeUrl() и не вызывать стандартный генератор URL.
Посмотрел /core/model/modx/modx.class.php
а потом /core/model/modx/modcontext.class.php
и не все мне там понятно.
Реально это переписать или нет?
Включается по настройке &useDirectUrl=`1`
Вообще, тут скорость во многом упирается в глубину поиска и количество дочерних документов, а дальше по приоритету — хостинг и вложенные сниппеты/модификаторы.
Для сравнения, на своем сайте на modhost'e (минимальный тариф) некешируемый вызов двухуровнего меню (суммарно ~18 ресурсов) выполняется за 0.06 секунд (кешируемый за 0.01).
Если включаю fastMode то не обрабатывает некоторые теги
типа [[+createdby:userinfo=`photo`]], [[+createdby:userinfo=`fullname`]] выводит без этих тегов в pdoResources
Цитата:
Феном-теги (условия, сниппеты и т.п.) тоже будут вырезаны?