Низкая производительность "виртуальных" страниц
Создаю свою систему ЧПУ (читаемых URL'ов) на ModX. Реализуется она плагином на событии OnPageNotFound:
Заметил, что производительность подобных виртуальных страниц сильно хромает. При запросе к ней тратится где-то на 0,1-0,2 сек больше, чем если бы страница была реальной (т.е. имела бы свой фиксированный, понятный ModX URL).
Эксперименты показали, что проблема в Wayfinder. На подобных «виртуальных» страницах он формирует меню из 8 пунктов на 0,1-0,15 сек дольше. При этом в кэше страницы он появляется, но время его повторных вызовов от этого особо не уменьшается.
Хочется исправить этот косяк, т.к. другие страницы с той же структурой выполняются гораздо быстрее.
У кого-нибудь есть идеи, в чем может быть загвоздка? Или может быть предложите другую реализацию «виртуальных» страниц?
if ($modx->event->name != 'OnPageNotFound') {return false;}
$alias = $modx->context->getOption('request_param_alias', 'q');
$object_id = URLParser($_REQUEST[$alias]);
$modx->setPlaceholder('ObjectID', $object_id);
$modx->sendForward(1342);Дальше внутри страницы на основании этого плейсхолдера выводится содержание объекта. Подобный подход связан с тем, что объекты находятся и администрируются в другой базе. Тащить их в ModX — слишком затратно.Заметил, что производительность подобных виртуальных страниц сильно хромает. При запросе к ней тратится где-то на 0,1-0,2 сек больше, чем если бы страница была реальной (т.е. имела бы свой фиксированный, понятный ModX URL).
Эксперименты показали, что проблема в Wayfinder. На подобных «виртуальных» страницах он формирует меню из 8 пунктов на 0,1-0,15 сек дольше. При этом в кэше страницы он появляется, но время его повторных вызовов от этого особо не уменьшается.
Хочется исправить этот косяк, т.к. другие страницы с той же структурой выполняются гораздо быстрее.
У кого-нибудь есть идеи, в чем может быть загвоздка? Или может быть предложите другую реализацию «виртуальных» страниц?
Комментарии: 6
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Правда, обычно речь не идёт 0,1-0,15 сек. Например, у нас здесь весь раздел пользователей работает на OnPageNotFound и, вроде, не тормозят.
Попробуй заменить Wayfinder на pdoMenu.
Возможно, костыльное решение, однако в некоторых случаях может быть весьма оправданным.
Минус: зашитая в коде маршрутизация. Подходит только для малого количества очень редко меняющихся шаблонов.
Сильный минус: нестандартный подход, усложняющий понимание иными разработчиками.