Длительное ожидание перед загрузкой страницы
День добрый!
Друзья, помогите решить одну проблему. У одного сайта наблюдается длинная задержка в загрузке станиц товаров. Изначально грешил на опции товаров, но с помощью сервисов проверки скорости загрузки выяснил, что у станицы происходит какое-то ожидание длительностью в 3 с лишним секунды, потом все залетает махом.
Сначала грешил на изображения, коих на странице также достаточно, но вот сервис показал что изображения вроде как нормально загружаются…
Или дело все же в большом количестве изображений на странице? Размер страниц показывает 3,4 Мб. Из них почти 3Мб — изображения. Он действительно ждет пока все картинки не прогрузяться или дело тут еще в чем-то?
Друзья, помогите решить одну проблему. У одного сайта наблюдается длинная задержка в загрузке станиц товаров. Изначально грешил на опции товаров, но с помощью сервисов проверки скорости загрузки выяснил, что у станицы происходит какое-то ожидание длительностью в 3 с лишним секунды, потом все залетает махом.
Сначала грешил на изображения, коих на странице также достаточно, но вот сервис показал что изображения вроде как нормально загружаются…
Или дело все же в большом количестве изображений на странице? Размер страниц показывает 3,4 Мб. Из них почти 3Мб — изображения. Он действительно ждет пока все картинки не прогрузяться или дело тут еще в чем-то?
Комментарии: 11
Установите DebugParser и посмотрите его лог, думаю сразу станет понятно что у вас тормозит.
Спасибо. Воспользовался debugParser. Вывел 10 самых медленных тегов. Самыми медленными со скоростью загрузки почти в секунду является вывод опций, в которых как раз присутствуют картинки.
Вот код этого вывода (для примера самый первый один)
Вот код этого вывода (для примера самый первый один)
[[!msOptions?name=`colour_housing` &tplRow=`tpl.msOptions.radio.row3` &tplOuter=`tpl.msOptions.outer3`]]
Код ttpl.msOptions.radio.row3<div class="ch cb" style="height: 227px;">
<div id="total_price2"><span class="circle"></span><span class="pr_changeHid"><i></i></span><span class="circle right"> <i class="fa fa-rub" aria-hidden="true"></i></span></div>
<div class="ffRadioWrapper">
<div class="ffCheckbox"></div>
<input type="radio" name="options[[[+name]]][0][value]" value="[[+value]]" rel="9750" class="product_option product_option_input" style="">
</div>
<div align="center">
<a class="fancybox" rel="gallery1" href="[[!msoptiongetfield? &fileld=`photo` &name=`[[+name]]` &value=`[[+value]]` &array=`[[*properties]]`]]" title="[[+pagetitle]]">
<img src="[[!msoptiongetfield? &fileld=`photo` &name=`[[+name]]` &value=`[[+value]]` &array=`[[*properties]]`]]" width="120" height="90" alt="[[+pagetitle]]"></a>
</div>
<p>
<label style="text-align:center;display:inline-block;width:100%;">[[+value]]</label>
</p>
<div class="price" style="text-align:center;">[[!msoptiongetfield? &fileld=`price` &name=`[[+name]]` &value=`[[+value]]` &array=`[[*properties]]`]] [[%ms2_frontend_currency]]</div>
</div>
На данным момент я вижу одним из решений со скоростью — использовать phpthumbon для изображений. А как мне их подвязать к такому выводу картинок?[[!msoptiongetfield? &fileld=`photo` &name=`[[+name]]` &value=`[[+value]]` &array=`[[*properties]]`]]
А также — почему так долго генерится тег [[*pagetitle]]?
На странице вызывается 10 раз msOptions, он оформляет свою работу в чанк tpl.msOptions.outer3, внутри которого еще 3 вызова msoptiongetfield.
Итого, 30 вызовов msoptiongetfield на странице для вывода картинок, которые зачем-то запиханы в опции, когда у товаров есть своя галерея. Да и вообще, что это за сниппет такой — msoptiongetfield? Он не из miniShop2, а какой-то самописный.
Еще и цена в опциях! Что это вообще за прикол?
Неудивительно, что всё это жутко тормозит.
Итого, 30 вызовов msoptiongetfield на странице для вывода картинок, которые зачем-то запиханы в опции, когда у товаров есть своя галерея. Да и вообще, что это за сниппет такой — msoptiongetfield? Он не из miniShop2, а какой-то самописный.
Еще и цена в опциях! Что это вообще за прикол?
Неудивительно, что всё это жутко тормозит.
Да, Василий, сниппет самописный. Необходимо было реализовать опции товаров с картинками и ценами. Я конечно понимаю, что там все сделано, мягко говоря, через одно место. Мне так написал программист, потом я еже пару недель разбирался как там все работает.
Готов предоставить доступы ко всему этому делу и хочу попросить о помощи или хотя бы подсказать, как реализовать тот же функционал, но без этих самописных штуковин, пускай даже на основе каких-то платных модулей — это будет работать в любом случае быстрее и лучше, чем сейчас.
Готов предоставить доступы ко всему этому делу и хочу попросить о помощи или хотя бы подсказать, как реализовать тот же функционал, но без этих самописных штуковин, пускай даже на основе каких-то платных модулей — это будет работать в любом случае быстрее и лучше, чем сейчас.
Есть же готовые решения, например msOptionsPrice2.
У меня, пардон, времени разбираться с чужими проблемами нет. Просто указываю на очевидные тормоза, когда на странице запускаются 10ки сниппетов неизвестного содержания.
У меня, пардон, времени разбираться с чужими проблемами нет. Просто указываю на очевидные тормоза, когда на странице запускаются 10ки сниппетов неизвестного содержания.
modhost.pro позволяет протестировать это дополнение бесплатно.
UPD: Добавил phpThumbOn в вызовы опций, с генерацией нужного размера фото (поменьше), плюс сами фото сделал вызывать кешируемыми.
Общая длительность после снизилась на 1 секунду примерно. Но ведь тут мы имеем тормоза после очистки кеша? Да и в целом картина все еще не ахти. Подскажите, как можно еще снизить время загрузки?
Общая длительность после снизилась на 1 секунду примерно. Но ведь тут мы имеем тормоза после очистки кеша? Да и в целом картина все еще не ахти. Подскажите, как можно еще снизить время загрузки?
<div align="center">
<a class="fancybox" rel="gallery1" href="[[phpthumbon? &input=`[[msoptiongetfield? &fileld=`photo` &name=`[[+name]]` &value=`[[+value]]` &array=`[[*properties]]`]]` &options=`&w=400&h=400&zc=1`]]" title="[[+pagetitle]]">
<img src="[[phpthumbon? &input=`[[msoptiongetfield? &fileld=`photo` &name=`[[+name]]` &value=`[[+value]]` &array=`[[*properties]]`]]` &options=`&w=120&h=90&zc=1`]]" width="120" height="90" alt="[[+pagetitle]]"></a>
</div>
Ну как вариант попробуйте переписать все на Fenom (в послденем Minishop2 там все переписано именно на нем) + обычно если универсальные решения по скорости не устраивают, пишется свой сниппет, где происходит вся обработка и отдавать все данные плейсхолдерами в шаблон..
Переписать на Fenom все я думаю трудоемко?
И почему pagetitle так долго грузится?
И почему pagetitle так долго грузится?
Ну переписывать или нет, конечно ваше дело. Нужна скорость — перепишите. А +pagetitle, наверное слишком часто у вас вызвается т.к. в доках
Если на странице какой-то тег вызывается несколько раз, то эти вызовы суммируются.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.