2
votes

Comment différer au mieux les scripts à exclure de PageSpeed Insights?

Nous utilisons Zopim sur notre site Web. Malheureusement, à cause de cela, nous sommes considérablement punis sur PageSpeed Insights .

  • Sans Zopim: 86/100
  • Avec Zopim: 66/100

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:

  • Quelle est la meilleure façon de différer les scripts non critiques pour s'assurer que PageSpeed Insights ne compte pas le script comme faisant partie de son score?
  • comment appliquer cela au script Zopim?


2 commentaires

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 ...


3 Réponses :


1
votes

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();">


0 commentaires

1
votes

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>


0 commentaires

1
votes

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>


0 commentaires