Nous utilisons Zopim sur notre site Web. Malheureusement, à cause de cela, nous sommes considérablement punis sur PageSpeed Insights .
Zopim semble être conscient du problème et promet d'optimiser davantage son widget, mais nous n'avons pas encore vu beaucoup de progrès.
Le code pour ajouter Zopim est le suivant:
<script type="text/javascript"> window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s= d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set. _.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute("charset","utf-8"); $.src="https://v2.zopim.com/?2dAdkKRoqdi9hHHrfr302XabQaK8DN7f";z.t=+new Date;$. type="text/javascript";e.parentNode.insertBefore($,e)})(document,"script"); </script>
J'ai joué avec différentes façons de différer l'exécution du script (différer et asynchrone), mais je n'ai pas réussi à améliorer notre score PageSpeed Insights (sans supprimer complètement Zopim).
Je suis venu à cet article mais ma tentative naïve (remplacer "defer.js" par " https://v2.zopim.com/?2dAdkKRoqdi9hHHrfr302XabQaK8DN7f ") n'a pas eu l'effet escompté et Zopim est toujours compté par PageSpeed.
Ma question:
3 Réponses :
Oui, les zopim ne sont pas dans mes bons livres, donc j'ai aussi essayé de corriger leur code. C'est ainsi que j'ai différé le script zopim.
<script type="text/javascript"> function do_zopim() { jQuery(document).on("mousemove.zopim_defer scroll.zopim_defer", function(e) { window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s= d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set. _.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute("charset","utf-8"); $.src="https://v2.zopim.com/?anonymous";z.t=+new Date;$. type="text/javascript";e.parentNode.insertBefore($,e)})(document,"script"); jQuery(document).off("mousemove.zopim_defer scroll.zopim_defer"); }); } </script> <body onload="do_zopim();">
Vous pouvez le faire en ajoutant $.setAttribute("defer",null);
à la fin de la troisième ligne de javascript, de sorte que ce soit comme suit:
<script type="text/javascript"> window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s= d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set. _.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute("charset","utf-8");$.setAttribute("defer",null); $.src="https://v2.zopim.com/?2dAdkKRoqdi9hHHrfr302XabQaK8DN7f";z.t=+new Date;$. type="text/javascript";e.parentNode.insertBefore($,e)})(document,"script"); </script>
J'ai changé mon site pour que Zopim soit chargé après le chargement de la page elle-même, au lieu de faire partie intégrante de ce chargement initial de la page. Placez ceci juste avant votre </body>
:
<script> window.addEventListener("load", function () { window.$zopim || (function (d, s) { var z = $zopim = function (c) { z._.push(c) }, $ = z.s = d.createElement(s), e = d.getElementsByTagName(s)[0]; z.set = function (o) { z.set._.push(o); }; z._ = []; z.set._ = []; $.async = !0; $.setAttribute('charset', 'utf-8'); $.src = '//v2.zopim.com/?1ubUmoyGvu8nQlye7YBWC3pLL0lgJDUf'; z.t = +new Date; $. type = 'text/javascript'; e.parentNode.insertBefore($, e); })(document, 'script'); }) </script>
En fin de compte, nous avons différé Zopim de 4 secondes, ce qui est suffisant pour que Google PageSpeed Insights l'ignore complètement dans son score.
Je me suis aussi demandé si l'injection depuis l'intérieur d'une
requestIdleCallback
serait suffisante ...