Сравнение скорости работы 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
и не все мне там понятно.
Реально это переписать или нет?
Но прочитав его, расстроился. Причем тут скорость работы БД и ее кеша, если время работы парсера во много раз медленнее (или я цифры в колонках не так трактую?).
Но делать нечего, раз говорят, что нужно каждый вызов самостоятельно, то пошел отдельно запустил (попутно выкинул со страницы вообще все, кроме данного вызова).
Построение меню с помощью Wayfinder:
То же меню с pdoMenu:
Дальше пошел посмотрел, а что так парсер медленно работает.
Нашел в файле /core/components/pdotools/model/pdotools/pdomenu.class.php в строках 190 и 194 вызов
$this->modx->makeUrl(...)
Заменил 194-ю строку
с
$row['link'] = $this->modx->makeUrl($row['id'], '', '', $this->pdoTools->config['scheme']);
на что-то подобное:$row['link'] = '/' . $row['uri'];
Получил следующую скорость:В 3,5 раза быстрее!
Отсюда вопрос. Можно ли (и могут ли авторы) переписать вызов $this->modx->makeUrl() и не вызывать стандартный генератор URL.
Посмотрел /core/model/modx/modx.class.php
а потом /core/model/modx/modcontext.class.php
и не все мне там понятно.
Реально это переписать или нет?
Реально, конечно — переписывай!
Переписал! github.com/bezumkin/pdoTools/pull/181
Включается по настройке &useDirectUrl=`1`
Включается по настройке &useDirectUrl=`1`
никак не могу найти заметку, где в pdoTools впервые была реализована замечательная идея замены [[~[[+id]]]] на {{~{{+id}}}}, которая давала очень хороший прирост в скорости, вследствии того, что не создавались объекты для генерирования ссылки через makeUrl();
Кешируйте вызов pdoMenu, используйте полноценные чанки и перепишите их содержимое на fenom, пропишите &fastMode.
Вообще, тут скорость во многом упирается в глубину поиска и количество дочерних документов, а дальше по приоритету — хостинг и вложенные сниппеты/модификаторы.
Для сравнения, на своем сайте на modhost'e (минимальный тариф) некешируемый вызов двухуровнего меню (суммарно ~18 ресурсов) выполняется за 0.06 секунд (кешируемый за 0.01).
Вообще, тут скорость во многом упирается в глубину поиска и количество дочерних документов, а дальше по приоритету — хостинг и вложенные сниппеты/модификаторы.
Для сравнения, на своем сайте на modhost'e (минимальный тариф) некешируемый вызов двухуровнего меню (суммарно ~18 ресурсов) выполняется за 0.06 секунд (кешируемый за 0.01).
fastMode для всех сниппетов работает или на некоторых!
Если включаю fastMode то не обрабатывает некоторые теги
типа [[+createdby:userinfo=`photo`]], [[+createdby:userinfo=`fullname`]] выводит без этих тегов в pdoResources
Если включаю fastMode то не обрабатывает некоторые теги
типа [[+createdby:userinfo=`photo`]], [[+createdby:userinfo=`fullname`]] выводит без этих тегов в pdoResources
Документация.
Цитата:
Цитата:
Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны.
А можно использовать &fastMode с феномом?
Феном-теги (условия, сниппеты и т.п.) тоже будут вырезаны?
Феном-теги (условия, сниппеты и т.п.) тоже будут вырезаны?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.