Page 1 of 2

сильно тормозит сайт

Posted: Thu Jan 24, 2019 7:18 am
by smart
Приветствую, возникла проблема, стал очень сильно тормозить сайт, на него сграблены свои галлеры, база не большая, есть категории и топлист. После апа и чистки кэша какое-то время сайт работает нормально, потом через несколько минут начинается тоже самое. Сервер и винты не нагружны, админы сказали что нужно писать автору скрипта.

Re: сильно тормозит сайт

Posted: Thu Jan 24, 2019 7:23 am
by admin
ок, какой сайт как видно что тормозит?

Re: сильно тормозит сайт

Posted: Thu Jan 24, 2019 7:35 am
by smart
admin wrote: Thu Jan 24, 2019 7:23 am ок, какой сайт как видно что тормозит?
сайт со своими пикчами, тормозит при переходах между страницами, очень долго думает, перед открытием страницы, скинул в личку сам сайт

Re: сильно тормозит сайт

Posted: Thu Jan 24, 2019 9:00 am
by admin
проблема в "таг в таге"

в кратце ситуация такая

<category order=ctr num=1-100>

<trader order=uniques num=12-12>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

</category>

парсится это для выполнения в 100 раз по

<trader order=uniques num=12-12>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

но у вас там не только 12-12, а в реальности штук 20 таки тагов

получается вывод категорий в реальности растягивается на 100 * 20 = 2000 тагов на странице

вопрос в том, что <trader не кешится специально, тк страница может быть закешена на час или день (например страница галеры), а топ трейдеров меняется каждую минуту

получается на каждую загрузку страницы надо по новой расписить 2000 тагов и это тормозит.

Что делать: вынести

<trader order=uniques num=12-12>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>


за пределы цикла

<category order=ctr num=1-100>

те должно быть типа

$my_var = '

<trader order=uniques num=12-12>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

';


<category order=ctr num=1-100>
тут где надо юзаем $my_var
</category>

Re: сильно тормозит сайт

Posted: Sat Jan 26, 2019 7:41 am
by smart
admin wrote: Thu Jan 24, 2019 9:00 am Что делать: вынести

<trader order=uniques num=12-12>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>


за пределы цикла

<category order=ctr num=1-100>

те должно быть типа

$my_var = '

<trader order=uniques num=12-12>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

';


<category order=ctr num=1-100>
тут где надо юзаем $my_var
</category>
если я правильно понимаю, то такое решение не решает задачу, так как все равно помещаем таг в таг, только через переменную

Re: сильно тормозит сайт

Posted: Sat Jan 26, 2019 9:06 am
by admin
Решает.

упростим пример

3 категории

у вас сделано так (опять же сокращенный вариант но думаю смысл слысл ясен)
<category order=ctr num=1-3>

<!--CATEGORY_NAME-->

<trader order=uniques num=1>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

<trader order=uniques num=2>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

и тп

</category>
после парсинга это превратится в

Category 1

<trader order=uniques num=1>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

<trader order=uniques num=2>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

Category 2

<trader order=uniques num=1>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

<trader order=uniques num=2>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>



Category 3

<trader order=uniques num=1>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

<trader order=uniques num=2>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

потому как результат тага трейдера не кешится

итого нам надо на каждую загрузку страницы заменить в данном примере грубо 6 тагов (по факту больше тк надо инклудить темплейт, в инклуде тоже наверняка не 1 таг и тп)


если

<trader order=uniques num=1>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>


вынести за пределы цикла то получится


$var1 = <trader order=uniques num=1>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>

$var2 = <trader order=uniques num=2>
<!--INCLUDE_TEMPLATE_toplist_thumb-->
</trader>


Category 1
$var1
$var2

Category 2
$var1
$var2


Category 3

$var1
$var2


те надо будет заменить только 1 раз таг трейдера, а остальные разы результат уже будет готов.


причем на самом деле оно кладет в кеш содержимое

<trader order=uniques num=2> ...

но из-за такого темплейта в цикле скрипт ходит и достает из кеша 1200 раз (это реально я посчитал на вашем темплейте) и это занимает время

Re: сильно тормозит сайт

Posted: Sun Jan 27, 2019 12:46 pm
by smart
а каким образом это реализовать в разных шаблонах ?
когда <trader order=uniques num=2> в одном шаблоне, а <category order=ctr num=1-3> в другом шаблоне ?

так как в итоге вывод не работает, при коде со списком трейдеров в одном шаблоне, а вставка идет в другом с переменной из первого

Re: сильно тормозит сайт

Posted: Sun Jan 27, 2019 12:59 pm
by admin
честно гворя не совсем понял как это ...

Re: сильно тормозит сайт

Posted: Tue Jan 29, 2019 9:45 am
by smart
admin wrote: Sun Jan 27, 2019 12:59 pm честно гворя не совсем понял как это ...
на текущем примере:
блок category_thumbs содержит код с тумбами, для подмешивания топлиста
блок top_item содержит код с тумбами топлиста, обернутыми в пхп с переменной my_var

вставляя в блоке category_thumbs переменную my_var которая обернута в блоке top_item, я не получаю никакого результата, нужно объединить эти два блока, тогда будет работать

Re: сильно тормозит сайт

Posted: Tue Jan 29, 2019 9:57 am
by admin
думаю будет удобнее сначала это сделать без блоков простейшими конструкциями типа


$my_trader1 = 'это тумба трейдера';


<category order=ctr num=1-100>
тут где надо юзаем $my_trader1
</category>

и в тестовом темпелйте это вывести, а потом уже дополнять тагами и переносом в разные блоки

если в какой-то момент перестанет работать то сразу будет ясно где пробелма