Отложенная загрузка JivoSite
Здравствуйте, практически все, кто запускал свой собственный проект должен знать про онлайн консультанты, ну и 100% каждый их видел, поскольку столь удобная функция не может остаться не замеченной.

Монополистом на этом рынке можно сразу же выделить JivoSite. Но тут же встаёт вопрос. А на сколько этот онлайн консультант замедляет работу сайта. А именно всем известный тест от Google. А как оказалось, если удалить «ЖивоСайт», то сайт набирает на 17 очков больше для мобильной версии и на 19 очков больше для ПК версии. Тогда нужно сделать так, что бы и не затрагивать тест, но и консультант работал так же, как и раньше.
Тут стоит сказать спасибо GuidingD, который написал код, который предоставлен снизу.
Вот обычный код, который предоставляется «ЖиовоСайтом» для установки консультанта.
<!— 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 —>
Но его немного модифицировали и создали отложенную загрузку. Теперь загрузка осуществляется точно с такой же скоростью, как и раньше, но на тест это никак не влияет.
<!— 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 —>
Как только вы вставите этот код вместо стандартного, скорость загрузки сайта для теста намного сократиться. Не забудьте вставить свой widgetID, что бы скрипт заработал.
