Длительное ожидание перед загрузкой страницы Новый


День добрый!
Друзья, помогите решить одну проблему. У одного сайта наблюдается длинная задержка в загрузке станиц товаров. Изначально грешил на опции товаров, но с помощью сервисов проверки скорости загрузки выяснил, что у станицы происходит какое-то ожидание длительностью в 3 с лишним секунды, потом все залетает махом.
Сначала грешил на изображения, коих на странице также достаточно, но вот сервис показал что изображения вроде как нормально загружаются…
Или дело все же в большом количестве изображений на странице? Размер страниц показывает 3,4 Мб. Из них почти 3Мб — изображения. Он действительно ждет пока все картинки не прогрузяться или дело тут еще в чем-то?
25 октября 2016, 23:50    Андрей   
0    349 0

Комментарии (11)

  1. Sergey Pozhidaev 26 октября 2016, 05:46 # +2
    Установите DebugParser и посмотрите его лог, думаю сразу станет понятно что у вас тормозит.
    1. Андрей 26 октября 2016, 08:24 # 0
      Спасибо. Воспользовался 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]]?
      1. Василий Наумкин 26 октября 2016, 09:22 # 0
        На странице вызывается 10 раз msOptions, он оформляет свою работу в чанк tpl.msOptions.outer3, внутри которого еще 3 вызова msoptiongetfield.

        Итого, 30 вызовов msoptiongetfield на странице для вывода картинок, которые зачем-то запиханы в опции, когда у товаров есть своя галерея. Да и вообще, что это за сниппет такой — msoptiongetfield? Он не из miniShop2, а какой-то самописный.

        Еще и цена в опциях! Что это вообще за прикол?

        Неудивительно, что всё это жутко тормозит.
        1. Андрей 26 октября 2016, 09:31 # 0
          Да, Василий, сниппет самописный. Необходимо было реализовать опции товаров с картинками и ценами. Я конечно понимаю, что там все сделано, мягко говоря, через одно место. Мне так написал программист, потом я еже пару недель разбирался как там все работает.
          Готов предоставить доступы ко всему этому делу и хочу попросить о помощи или хотя бы подсказать, как реализовать тот же функционал, но без этих самописных штуковин, пускай даже на основе каких-то платных модулей — это будет работать в любом случае быстрее и лучше, чем сейчас.
          1. Василий Наумкин 26 октября 2016, 10:37 # +1
            Есть же готовые решения, например msOptionsPrice2.

            У меня, пардон, времени разбираться с чужими проблемами нет. Просто указываю на очевидные тормоза, когда на странице запускаются 10ки сниппетов неизвестного содержания.
            1. Андрей 26 октября 2016, 10:47 # 0
              Понимаю Вашу занятость. Но как реализовать с помощью msOptionsPrice2 такой вид опций как на скрине? Возможно ли это?
              1. Василий Наумкин 26 октября 2016, 10:49 # 0
                modhost.pro позволяет протестировать это дополнение бесплатно.
      2. Андрей 26 октября 2016, 08:39 # 0
        UPD: Добавил phpThumbOn в вызовы опций, с генерацией нужного размера фото (поменьше), плюс сами фото сделал вызывать кешируемыми.
        Общая длительность после снизилась на 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>
        1. Sergey Pozhidaev 26 октября 2016, 08:48 # 0
          Ну как вариант попробуйте переписать все на Fenom (в послденем Minishop2 там все переписано именно на нем) + обычно если универсальные решения по скорости не устраивают, пишется свой сниппет, где происходит вся обработка и отдавать все данные плейсхолдерами в шаблон..
          1. Андрей 26 октября 2016, 08:50 # 0
            Переписать на Fenom все я думаю трудоемко?
            И почему pagetitle так долго грузится?
            1. Sergey Pozhidaev 26 октября 2016, 09:09 # 0
              Ну переписывать или нет, конечно ваше дело. Нужна скорость — перепишите. А +pagetitle, наверное слишком часто у вас вызвается т.к. в доках
              Если на странице какой-то тег вызывается несколько раз, то эти вызовы суммируются.
      Вы должны авторизоваться, чтобы оставлять комментарии.