Низкая производительность "виртуальных" страниц
Создаю свою систему ЧПУ (читаемых 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 сек дольше. При этом в кэше страницы он появляется, но время его повторных вызовов от этого особо не уменьшается.
Хочется исправить этот косяк, т.к. другие страницы с той же структурой выполняются гораздо быстрее.
У кого-нибудь есть идеи, в чем может быть загвоздка? Или может быть предложите другую реализацию «виртуальных» страниц?
- ВКонтакте
- Telegram
- Viber
- РЎРєРѕРїРСвЂВВВВВВВВровать ссылку
1 358
0
Комментарии: 6
27 января 2015, 18:17
Работа с OnPageNotFound по определению чуть медленнее, потому что сайту сначала нужно понять, что запрошенной страницы нет, потом выдать событие, а потом снова искать нужную страницу, но уже через твой плагин.
Правда, обычно речь не идёт 0,1-0,15 сек. Например, у нас здесь весь раздел пользователей работает на OnPageNotFound и, вроде, не тормозят.
Попробуй заменить Wayfinder на pdoMenu.
Правда, обычно речь не идёт 0,1-0,15 сек. Например, у нас здесь весь раздел пользователей работает на OnPageNotFound и, вроде, не тормозят.
Попробуй заменить Wayfinder на pdoMenu.
31 января 2016, 21:34
Пробую реализовать страницы через кастомную таблицу, использую событие OnPageNotFound. Если открывать несколько страниц, то кешируется первая страница и почему-то показывается на всех последующих. Не скажите, почему так происходит?
27 января 2015, 20:04
Можно попробовать повесить плагин на событие OnHandleRequest, но придется изменить немного логику плагина
31 января 2016, 22:50
Еще вариант — на событии OnMODXInit проверять $_REQUEST['q'] на соответствие собственному шаблону и, если подходит, часть uri отправлять в качестве get параметра, в q оставив только адрес существующего ресурса.
Возможно, костыльное решение, однако в некоторых случаях может быть весьма оправданным.
Возможно, костыльное решение, однако в некоторых случаях может быть весьма оправданным.
31 января 2016, 23:02
Плюс: нет события OnPageNotFound и связанных с ним замедляющих механизмов.
Минус: зашитая в коде маршрутизация. Подходит только для малого количества очень редко меняющихся шаблонов.
Сильный минус: нестандартный подход, усложняющий понимание иными разработчиками.
Минус: зашитая в коде маршрутизация. Подходит только для малого количества очень редко меняющихся шаблонов.
Сильный минус: нестандартный подход, усложняющий понимание иными разработчиками.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Здесь упомянуты:
Компонент | Текущая версия | Закачки |
pdoTools | 2.13.2-pl от 02.09.2021 | 54 258 |
Вчера в 21:11
Здравствуйте
Есть желание использовать компонент polylang для автоматизации перевода с наименьшими усилиями, но есть пару вопросов, которые хотелось ...
Polylang 143
Вчера в 16:30
Добрый день.
Удалите плагин vpSystem от пакета.
[VirtualPage] - Виртуальные страницы. 183
Вчера в 08:40
Хочестя в тикеты при сохранении комментария добавить кнопку «проверить на ошибки» и при нажатии на нее проверить комментарий на ошибки в нейросети сох...
pbStudio: Создаём сайт с PageBlocks – настройка и главная страница 6
Вчера в 08:36
Нет, через апи идет запрос в ChatGPT, который формирует необходимые данные о блоке, а дальше PageBlocks их разбирает и создает все нужные элементы.
PageBlocks 2.6.0. Настройка меню MODX и гибкое управление страницей пользователя 12
Вчера в 00:03
Не работает парсинг с vk.com, vkvideo.ru
[videoGallery] 1.4.0 Поддержка VK Video и ещё пара фишек 9
17 апреля 2025, 23:01
Можете тоже подсказать как победить данную ошибку?
msGallerySearch - загрузка изображений в галерею minishop2 по ссылке и Google поиск картинок 44
17 апреля 2025, 21:35
Действительно! Самого главного я и не обозначил! Спасибо! Поправлю заголовок.
Речь идет именно о панели менеджера и возможности управления заказами.
...
Вывод перечня заказанных товаров в таблицу с заказами minishop2 (панель менеджера) 8
17 апреля 2025, 17:49
Очевидно ты используешь источник файлов, поэтому в админке путь прописан от источника, хочешь полный путь, откажись от источника файлов.
Не открываются загруженные файлы пишет страница не найдена 2
17 апреля 2025, 15:08
Привет, Henk. Спасибо за ответ! В посте по ссылке меня больше всего заинтересовала фраза «мы интегрировали AI в медиа-менеджер, чтобы значительно упро...
MODX/AI Hackathon Part 2 (27 марта) 4
17 апреля 2025, 13:17
в preg_match проверка проходит, и туда 100% приходит url
Здравствуйте! Первый раз такое вижу, у слеша, не 1 символ в строке, а 9!! Как это делает MODX 2