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

smart
Posts: 1356
Joined: Sun Oct 09, 2011 4:54 pm

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

Post by smart »

Приветствую, возникла проблема, стал очень сильно тормозить сайт, на него сграблены свои галлеры, база не большая, есть категории и топлист. После апа и чистки кэша какое-то время сайт работает нормально, потом через несколько минут начинается тоже самое. Сервер и винты не нагружны, админы сказали что нужно писать автору скрипта.
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

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

Post by admin »

ок, какой сайт как видно что тормозит?
Don't forget to run script update
smart
Posts: 1356
Joined: Sun Oct 09, 2011 4:54 pm

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

Post by smart »

admin wrote: Thu Jan 24, 2019 7:23 am ок, какой сайт как видно что тормозит?
сайт со своими пикчами, тормозит при переходах между страницами, очень долго думает, перед открытием страницы, скинул в личку сам сайт
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

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

Post 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>
Don't forget to run script update
smart
Posts: 1356
Joined: Sun Oct 09, 2011 4:54 pm

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

Post 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>
если я правильно понимаю, то такое решение не решает задачу, так как все равно помещаем таг в таг, только через переменную
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

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

Post 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 раз (это реально я посчитал на вашем темплейте) и это занимает время
Don't forget to run script update
smart
Posts: 1356
Joined: Sun Oct 09, 2011 4:54 pm

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

Post by smart »

а каким образом это реализовать в разных шаблонах ?
когда <trader order=uniques num=2> в одном шаблоне, а <category order=ctr num=1-3> в другом шаблоне ?

так как в итоге вывод не работает, при коде со списком трейдеров в одном шаблоне, а вставка идет в другом с переменной из первого
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

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

Post by admin »

честно гворя не совсем понял как это ...
Don't forget to run script update
smart
Posts: 1356
Joined: Sun Oct 09, 2011 4:54 pm

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

Post by smart »

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

вставляя в блоке category_thumbs переменную my_var которая обернута в блоке top_item, я не получаю никакого результата, нужно объединить эти два блока, тогда будет работать
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

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

Post by admin »

думаю будет удобнее сначала это сделать без блоков простейшими конструкциями типа


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


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

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

если в какой-то момент перестанет работать то сразу будет ясно где пробелма
Don't forget to run script update
Post Reply