Пауза в загрузке контента и ошибка Resource with id 4105 was not found in context catalog
Добрый день.
Помогите, пожалуйста, решить проблему с медленной загрузкой сайта.
В основе проблемы ошибка: modx Resource with id 4105 was not found in context
Пауза составляет до 10 секунд.
Я далек от MODX, но имею опыт в PHP+MySQL.
Знакомый попросил разобраться с проблемой медленной загрузки сайта.
Прикрутил его сайт к запасному домену и закрыл от посетителей через
Apache Basic Authorization.
Перевел лог в режим DEBUG и вижу такое:
—
С 13:52:04 до 13:52:11.
Проблема проявляется при запросе некешированного контента.
Ресурс 4105 называется «Результаты поиска».
`4105` was requested but no alias was located.
Псевдоним у 4105: rezultatyi-poiska так что alias имеется.
Но по почему no alias was located?
Видимо, ресурс 4105 имеет отношения к выводу в ответ на поисковый запрос.
Само собой, что к контексту catalog этот ресурс 4105
отношения не имеет (not found in context catalog) и это нужно исправить.
До того, как заметил эту проблему,
стал удалять различные чанки, чтобы
увидеть, где именно проблема с загрузкой страницы.
Накопал тот чанк, который строит каталог с товарами оно
же основное меню с товарами ибо это у нас интрент магазин.
В найденном чанке и есть замедление загрузки сайта.
Как видно в приведенном выше логе,
проблема появляется при построении каталога
сниппетом Wayfinder.
Чанк: catalog_in_catalog
id=26
—
Если удалить этот чанк (catalog_in_catalog), то пауза исчезает
и страница грузится намного быстрее, но без каталога-менюшки.
Подскажите, пожалуйста куда копать.
Буду благодарен за помощь.
P.S.
Это ошибка: modx Resource with id 4105 was not found in context
Прочел статью:
2.5.5 logs «Resource with id not found in context » on valid cross-context links #13278
github.com/modxcms/revolution/issues/13278
Народ обсуждает, что разработчик Jason Coward (opengeek) перестарался и существующие
ссылки стал называть не найденными в контексте. А потому сообщение из
LOG_LEVEL_ERROR нужно перенести в LOG_LEVEL_WARN и игнорировать
в большинстве случаев. Так вот, у меня явно не тот случай, чтобы игнорировать,
но как исправить эту проблему я не знаю.
Помогите, пожалуйста, решить проблему с медленной загрузкой сайта.
В основе проблемы ошибка: modx Resource with id 4105 was not found in context
Пауза составляет до 10 секунд.
Я далек от MODX, но имею опыт в PHP+MySQL.
Знакомый попросил разобраться с проблемой медленной загрузки сайта.
Прикрутил его сайт к запасному домену и закрыл от посетителей через
Apache Basic Authorization.
Перевел лог в режим DEBUG и вижу такое:
—
[2019-05-21 13:52:04] (DEBUG @ ...modlexicon.class.php : 416) Language string not found: "sisea.get"
[2019-05-21 13:52:04] (DEBUG @ ...modlexicon.class.php : 416) Language string not found: "sisea.post"
[2019-05-21 13:52:04] (DEBUG @ ...modlexicon.class.php : 416) Language string not found: "sisea.toplaceholder_desc"
[2019-05-21 13:52:04] (WARN @ ...modcontext.class.php : 248) `4105` was requested but no alias was located.
[2019-05-21 13:52:04] (INFO in modContext::makeUrl @ resource 163) Resource with id 4105 was not found in context catalogПауза на 7 секунд!С 13:52:04 до 13:52:11.
[2019-05-21 13:52:11] (DEBUG @ ...modlexicon.class.php : 416) Language string not found: "Имя CSS-класса для активного ресурса."
[2019-05-21 13:52:11] (DEBUG @ ...modlexicon.class.php : 416) Language string not found: ""
[2019-05-21 13:52:11] (DEBUG @ ...modlexicon.class.php : 416) Language string not found: "В чанке сниппета будет доступен плейсхолдер [[+subitemcount]] - число дочерних ресурсов."Проблема проявляется при запросе некешированного контента.
Ресурс 4105 называется «Результаты поиска».
`4105` was requested but no alias was located.
Псевдоним у 4105: rezultatyi-poiska так что alias имеется.
Но по почему no alias was located?
Видимо, ресурс 4105 имеет отношения к выводу в ответ на поисковый запрос.
Само собой, что к контексту catalog этот ресурс 4105
отношения не имеет (not found in context catalog) и это нужно исправить.
До того, как заметил эту проблему,
стал удалять различные чанки, чтобы
увидеть, где именно проблема с загрузкой страницы.
Накопал тот чанк, который строит каталог с товарами оно
же основное меню с товарами ибо это у нас интрент магазин.
В найденном чанке и есть замедление загрузки сайта.
Как видно в приведенном выше логе,
проблема появляется при построении каталога
сниппетом Wayfinder.
Чанк: catalog_in_catalog
id=26
—
<!-- Goods Catalogue 2 -->
[[!Wayfinder?
&contexts=`[[++catalogContext]]`
&startId=`[[++IDcatalog]]`
&level=`3`
&hideSubMenus=`1`
&where=`[{"template:!=": "[[++IDtovarTpl]]"}]`
&outerTpl=`catalog_outerTpl`
&hereClass=`current_page`
&levelClass=``
&firstClass=`first`
&lastClass =`last` ]]
<!-- End Goods Catalogue 2 -->Если удалить этот чанк (catalog_in_catalog), то пауза исчезает
и страница грузится намного быстрее, но без каталога-менюшки.
Подскажите, пожалуйста куда копать.
Буду благодарен за помощь.
P.S.
Это ошибка: modx Resource with id 4105 was not found in context
Прочел статью:
2.5.5 logs «Resource with id not found in context » on valid cross-context links #13278
github.com/modxcms/revolution/issues/13278
Народ обсуждает, что разработчик Jason Coward (opengeek) перестарался и существующие
ссылки стал называть не найденными в контексте. А потому сообщение из
LOG_LEVEL_ERROR нужно перенести в LOG_LEVEL_WARN и игнорировать
в большинстве случаев. Так вот, у меня явно не тот случай, чтобы игнорировать,
но как исправить эту проблему я не знаю.
Комментарии: 12
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Во-первых, он некешируется… каждый раз меню строится с нуля.
Попробуйте заменить на pdoMenu, он быстрее работает.
Вы к тому же 3 уровня меню строите… как много пунктов в меню то?
Заменил Wayfinder на pdoMenu.
Оказывается для pdoMenu нужно pdoTools. ;-)
Поставил. Меню глючит, но работает чуть лучше.
Полагаете вот эти предупреждения на скорость формирования pdoMenu не влияют?
И целые секунды уходят на построение меню?
с pdoMenu лог такой:
pdoMenu — слева внизу какие-то «надписи». Что-то лишнее выводит.
Сколько ресурсов в дереве, которое строит сниппет?
pdoMenu нужно вызывать кешированным, зачем вы его некешированным вызываете?
Исправляюсь:
В результате скорость загрузки страницы сократилась с 15-25 сек, до 5-10 сек, что уже намного лучше!
catalog_outerTpl
catalog_tovar
Нашел немного ссылок в помощь тем, кто столкнется с этим заданием.
Вопрос про pdoMenu и кеширование обсуждали здесь
modx.pro/help/4812
MODX Docs — pdoMenu
docs.modx.pro/komponentyi/pdotools/snippetyi/pdomenu
Большой рассказ про pdoTools, часть первая
bezumkin.ru/training/course2/3005/
Замена Wayfinder на pdoMenu
modx.pro/help/6887
modx.pro/help/6887
Ситуацию не прояснило.
Не вижу его вызова, но на всякий случай
catalog
Из них Wayfinder тратит 7.63 сек.
Буду благодарен за помощь с оптимизацией.
Ссылка на полную картинку https://file.modx.pro/files/d/0/e/d0eb40c077170cdd126cceb3c51a7442.jpg
capweb.ru/modx-revo-snippet-wayfinder-cache-getcache.html
Установил сниппет getCache — modx.com/extras/package/getcache
модифицировал меню:
Директория /core/cache/global_cache создалась.
Элементы меню (каталога) в папке этой появились.
Но результат нулевой — как формировалось меню по 10 — 15 секунд, так и осталось.
Беда, беда…
Переход на pdoMenu дал очень ускорительный результат!
Искал-искал и нашел.
Статья: Меню в MODX с помощью компонента pdoMenu. Modx pdomenu пример
prostoy-site.ru/modx/modx-pdomenu-primer.html
В середине есть подзаголовок:
pdoMenu как замена Wayfinder / Сниппеты / Modx Revolution / Технический блог веб-разработчика
В ней подробно о том, какие Основные параметры Wayfinder на какие менять для pdoMenu.
Wayfinder -->pdoMenu
&startId=`[[*id]]` --> на &parents=`[[*id]]`
&cacheResults --> &cache=`1`
&contexts --> &context
&hereTpl --> &tplHere
Параметры шаблонов
&outerTp --> &tplOuter
&innerTpl --> &tplInner
В результате вышло так:
/manager/?a=element/chunk/update&id=26
catalog_in_catalog
В оригинале было так:
До удаления строки &where=`[{«template:!=»: "[[++IDtovarTpl]]"}]`
получал сотни не нужных ссылок в меню. После ее удаления (просто попробовал)
ненужные строки ушло.
Поясните, пожалуйста, не вылезут ли проблемы в будущем.
&where
JSON строка, в которой задаются параметры для выборки данных.
Например: &where=`[{«class_key:!=»: «msCategory»}]` То есть, не выводить те ресурсы, которые являются категориями Minishop.
Однако почему ее удаление дало положительный результат, я, конечно, не понял.
Буду благодарен за краткое пояснение. ;-)