Сайт стал дольше грузиться после перевода на Fenom
Доброй ночи!
Перевел тут один сайт на fenom — и он стал дольше грузиться. Полез проверять в чем дело. Оказывается, при загрузке страничке не из кэша, fenom очень даже выигрывает, а вот для кэшированных страниц, fenom всегда отдает контент медленнее. Но это на моем конкретном сайте, еще может быть с хостингом чего не того, поэтому решил проверить на mohost.pro.
И получил ту же ситуацию, причем, если смотреть через debugParser — он этого не показывает
s3703.h2.modhost.pro/index.php?id=4418&debug=1&cache=1 — с использованием fenom
s3703.h2.modhost.pro/index.php?id=4418
у ресурса с ID №1 около 5000 тысяч дочерних документов.
код, вызывается для верности х16 раз:
s3703.h2.modhost.pro/index.php?id=4417
код, вызывается для верности тоже х16 раз:
Как победить эту задержку?
UPD:
пароль на админку: MJK5OJm77Nef
UPD: если кто захочет повторить тест, вот так создается куча ресурсов в modx:
Перевел тут один сайт на fenom — и он стал дольше грузиться. Полез проверять в чем дело. Оказывается, при загрузке страничке не из кэша, fenom очень даже выигрывает, а вот для кэшированных страниц, fenom всегда отдает контент медленнее. Но это на моем конкретном сайте, еще может быть с хостингом чего не того, поэтому решил проверить на mohost.pro.
И получил ту же ситуацию, причем, если смотреть через debugParser — он этого не показывает
s3703.h2.modhost.pro/index.php?id=4418&debug=1&cache=1 — с использованием fenom
s3703.h2.modhost.pro/index.php?id=4418
у ресурса с ID №1 около 5000 тысяч дочерних документов.
код, вызывается для верности х16 раз:
{$_modx->runSnippet('pdoResources',[
'parents' =>1,
'limit' =>4000,
'depth' =>0,
'showLog' =>0,
'tpl' =>'@INLINE {$id}-{$menuindex}-{$createdon}-{$publishedon}
'
])}
0.0004 s - Query Time - Shows how long MODx took talking to the database
3 - Query Count -Shows how many database queries MODX made
0.1051 s - Parse Time - Shows how long MODX took to parse the page
0.1055 s - Total Time - Shows the total time taken to parse/ render the page
cache - Source - Shows the source of page, whether is database or cache.s3703.h2.modhost.pro/index.php?id=4417&debug=1&cache=1 — без fenoms3703.h2.modhost.pro/index.php?id=4417
код, вызывается для верности тоже х16 раз:
[[pdoResources?
&parents=`1`
&limit=`4000`
&depth=`0`
&showLog=`0`
&tpl=`@INLINE {{+id}}-{{+menuindex}}-{{+createdon}}-{{+publishedon}}
`
]]
0.0002 s - Query Time - Shows how long MODx took talking to the database
2 - Query Count -Shows how many database queries MODX made
0.0634 s - Parse Time - Shows how long MODX took to parse the page
0.0636 s - Total Time - Shows the total time taken to parse/ render the page
cache - Source - Shows the source of page, whether is database or cache.И что в итоге? конечно на таком лабораторном сайте разница не такая как на боевом, но у меня получилось что fenom при загрузке из кэша всегда проигрывает, около 40мс.Как победить эту задержку?
UPD:
пароль на админку: MJK5OJm77Nef
UPD: если кто захочет повторить тест, вот так создается куча ресурсов в modx:
<?php
for($i=1;$i<5000;$i++){
$response = $modx->runProcessor('resource/create', array(
'pagetitle' => $i
,'parent' => 1
,'template' => 1
,'published' => 1
));
}И вот так можно посмотреть время выполнения:<b>[^qt^]</b> - Query Time - Shows how long MODx took talking to the database
<b>[^q^]</b> - Query Count -Shows how many database queries MODX made
<b>[^p^]</b> - Parse Time - Shows how long MODX took to parse the page
<b>[^t^]</b> - Total Time - Shows the total time taken to parse/ render the page
<b>[^s^]</b> - Source - Shows the source of page, whether is database or cache. Комментарии: 11
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Fi1osofА в случае с феном в кеш пишется сырой контент, а не конечный HTML joxi.ru/DrlaPn9i44JxXm и он отрабатывается каждый раз даже при работе из кеша. Отсюда и потеря в производительности.
Если подлезать раньше, то начинаются другие проблемы, поэтому оставил пока так.
Fi1osofМожно вообще не использовать Fenom в контенте страницы и шаблонах, а только в чанках — это самый простой и беспроблемный способ работы. Именно он по умолчанию и включен.
Fi1osofFi1osofОчень сомневаюсь, что твой парсер может влезть уже после сохранения кеша, так как кеш сохраняется вообще в самую последнюю очередь, когда уже все отработано и скрипт в принципе завершает свою работу. Для этого навешивается специальный метод. Соответственно, если у тебя есть уже отработанный HTML, ты по тому же принципу можешь передать ресурсу код для кеширования и у тебя в кеше нормальный HTML будет. Важно только чтобы некешируемые элементы так и остались в этом коде элементами.
Не Fenom
1 запуск — 0.2594 s
2 запуск — 0.0522 s
Fenom
1 запуск — 0.2845 s
2 запуcк — 0.0674 s
Разница в районе погрешности на простейших чанках и 1000 итераций. Если такой результат не устраивает, всегда можно вернуться к сниппету IF и фильтрам вывода.
К слову сказать, sitemap на синтаксисе fenom при ~50000 страниц становится нерабочим для яндекса (слишком долгий ответ сервера, яндекс гарантированно такой сайтмап отвергнет, главное вовремя обнаружить :-) ). Из-за чего и весь сыр-бор. Откатился, и сделал все по-старинке на обычных {{+pls}} pdoTools.
Слава богу что и так работает! Очень удобно все делать на fenom. Чего только стоят массивы вместо JSON в join'ах, select'ах и where'рах.
PS: Последний раз использовал IF года два назад
А вообще, там просто str_replace нужен, он по умолчанию и используется.
Fi1osof