При оценке скорости загрузки сайта сервисом Google, обратил внимание, что довольно много очков теряем из-за установленного онлайн-консультанта JivoSite. При удалении кода онлайн-консультанта с сайта, проект набирает на 16 очков больше для мобильной версии и на 19 очков больше для ПК версии.

Поэтому встал вопрос об отложенной загрузке онлайн-консультанта. Причем отложенная загрузка должна работать для Google теста скорости и не мешать работе онлайн-консультантов. Например, в случае если диалог уже начался, и пользователь переходит с одной страницы на другую, код онлайн-консультанта нужно грузить сразу, и грузится он будет из уже из браузерного кеша, т.к. был скачан на первом хите.

Обычный код подгрузки онлайн-консультанта JivoSite
(нужно заменить #WidgetId# на идентификатор вашего виджета).

<!-- BEGIN JIVOSITE CODE {literal} -->
<script type='text/javascript'>
(function(){ var widget_id = '#WidgetId#';var d=document;var w=window;function l(){
var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = '//code.jivosite.com/script/widget/'+widget_id; var ss = document.getElementsByTagName('script')[0]; ss.parentNode.insertBefore(s, ss);}if(d.readyState=='complete'){l();}else{if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();</script>
<!-- {/literal} END JIVOSITE CODE -->


Код отложенной загрузки онлайн-консультанта JivoSite:
(нужно заменить #WidgetId# на идентификатор вашего виджета)


<!-- BEGIN JIVOSITE CODE {literal} -->
<script type='text/javascript'>
(function(){ document.jivositeloaded=0;var widget_id = '#WidgetId#';var d=document;var w=window;function l(){var s = d.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = '//code.jivosite.com/script/widget/'+widget_id; var ss = document.getElementsByTagName('script')[0]; ss.parentNode.insertBefore(s, ss);}//эта строка обычная для кода JivoSite
function zy(){
    //удаляем EventListeners
    if(w.detachEvent){//поддержка IE8
        w.detachEvent('onscroll',zy);
        w.detachEvent('onmousemove',zy);
        w.detachEvent('ontouchmove',zy);
        w.detachEvent('onresize',zy);
    }else {
        w.removeEventListener("scroll", zy, false);
        w.removeEventListener("mousemove", zy, false);
        w.removeEventListener("touchmove", zy, false);
        w.removeEventListener("resize", zy, false);
    }
    //запускаем функцию загрузки JivoSite
    if(d.readyState=='complete'){l();}else{if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}
    //Устанавливаем куку по которой отличаем первый и второй хит
    var cookie_date = new Date ( );
    cookie_date.setTime ( cookie_date.getTime()+60*60*28*1000); //24 часа для Москвы
    d.cookie = "JivoSiteLoaded=1;path=/;expires=" + cookie_date.toGMTString();
}
if (d.cookie.search ( 'JivoSiteLoaded' )<0){//проверяем, первый ли это визит на наш сайт, если да, то назначаем EventListeners на события прокрутки, изменения размера окна браузера и скроллинга на ПК и мобильных устройствах, для отложенной загрузке JivoSite.
    if(w.attachEvent){// поддержка IE8
        w.attachEvent('onscroll',zy);
        w.attachEvent('onmousemove',zy);
        w.attachEvent('ontouchmove',zy);
        w.attachEvent('onresize',zy);
    }else {
        w.addEventListener("scroll", zy, {capture: false, passive: true});
        w.addEventListener("mousemove", zy, {capture: false, passive: true});
        w.addEventListener("touchmove", zy, {capture: false, passive: true});
        w.addEventListener("resize", zy, {capture: false, passive: true});
    }
}else {zy();}
})();</script>
<!-- {/literal} END JIVOSITE CODE -->

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


  1. aliencash
    08.04.2019 17:50
    +1

    А я просто сделал 10секундный setTimeout на скрипт jivosite. Результат в google padespeet insight, gtmetrix, webpagetest — одинаковый, а вот в chrome lighthouse вы проигрываете 10-15 очков пр разделу performance.


  1. Playa
    08.04.2019 20:27
    +5

    Мне, как пользователю было бы лучше, если бы вы заменили код загрузки JivoSite на пустую строку.


    1. delphinpro
      08.04.2019 20:39
      +2

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


      1. aliencash
        08.04.2019 21:17

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


    1. aliencash
      08.04.2019 21:12

      Я согласен с вами. Совсем без чата грузилось бы быстрее. А без https вообще ураган бы был. Серьезно, до всех этих новшеств у меня 100/100 было в google padespeet insight, сейчас — меньше. Но место с поисковой выдаче в нашей тематике — на вес золота. Если я смогу таким образом «отжать» у конкурентов несколько лишних десятков пикселей на первой странице в яндексе — это уже серьезный профит. И если я не сделаю — сделают конкуренты и клиент уйдет к более заметному снипету. Т.ч. не от хорошей жизни чат внедряется.


      1. Madeas
        09.04.2019 09:05

        плюс живосайта еще в том, что он совместим с Яндекс, поэтому, в отличие от конкурентов, не подключивших его, у вас есть шанс получить потенциального клиента прямо из SERP, так бы отключил и/или поставил бы другую болталку.


    1. Terras
      09.04.2019 09:15

      Мне как пользователю было бы удобно, чтобы и в обычных магазинах не было продавцов, которые предлагают тебе помочь. Да и колл-центры не названивали и ничего не предлагали. Но реальность такова, что так можно больше заработать.


    1. RA_ZeroTech
      12.04.2019 16:24

      Не реклама, но может помочь:)
      hellogoodbye.app


  1. tvr
    08.04.2019 21:13
    +1

    А кнопку/переключатель "Вам нужен консультант -да/нет", слабо сделать?
    Ну реально достали, закроешь эту бесполезную хрень, перейдёшь на другую страницу — и снова "здорово".
    Итог — справа вверху в браузере (обычно) есть магический крестик, отправляющий в бездну забвения этого демона вместе с его обиталищем.
    Задолба.li!


    1. aliencash
      08.04.2019 21:23

      Не горячитесь. В живосайте всплывает со звуком эта хрень только на платных тарифах. На бесплатном она будет в свернутом виде тихо сидеть и молчать. Плюс есть возможность кастомизации плашки вызывающей шайтана. Я у себя эту плашку сделал 40х40, в углу. Думаю даже вас такой вариант не обидит.


      1. tvr
        08.04.2019 22:38

        В живосайте всплывает со звуком эта хрень

        Fixed.


  1. hazratgs
    08.04.2019 21:53

    Однажды были проблемы с livetex, там из-за long-polling запросов не отрисовывалась страница! иногда ответ от их сервера приходилось ждать минутами!


  1. hatman
    09.04.2019 09:22

    При всем моем уважении, но:

    «поддержка IE8»



    Вы что чатик пытаетесь поставить на пенсионный фонд России? =)


  1. denisgrim
    09.04.2019 13:52

    Кнопка чатика в правом нижнем углу мобильных сайтов бесит неимоверно! Постоянно задевается пальцем и всплывает поверх всего экрана. Причем чувствительной является зона значительно выше кнопки. Чтобы закрыть, приходится тянуться пальцем через весь экран!


    1. aliencash
      09.04.2019 14:09

      У меня она в левом нижнем =). Но в правом нижнем кнопка «вверх», которая вероятно вас бы тоже выводила из себя.