web-dev-qa-db-fra.com

Des inconvénients en incluant Google Analytics dans votre fichier js principal?

J'utilise MVC qui compresse et réduit au minimum tous mes fichiers js en un seul fichier. Il n'y a donc qu'une seule demande.

Autant que je sache, chaque page a un code Google Analytics sous leur js. Si je ne le fais pas mais que je l'ajoute à la place dans mon fichier principal js, cela causera-t-il des problèmes?

1
sed

Tiré de débordement de pile

Vous devez TOUJOURS vous inquiéter des collisions de variables définies dans la portée globale en JavaScript, que vous réduisiez ou non vos scripts. Utilisez un wrapper de fermeture fonctionnel pour envelopper votre code si vous souhaitez minimiser les risques de collission.

Le problème est qu’il peut entrer en conflit avec d’autres scripts bien sûr, vous pouvez utiliser des variables et des fermetures pour éviter que cela ne se produise, mais l’autre problème qui n’est pas inclus dans la réponse au dépassement de capacité est son appel à un code JavaScript externe qui peut ralentir. le fichier JavaScript min.

Ci-dessous, l'utilisation standard du script. Comme vous pouvez le constater, il fait appel à un JavaScript externe:

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.Push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.Push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

En raison du fait qu'il fait appel à un script externe, je dirais que vous feriez mieux de ne pas le servir dans un code JavaScript principal car cela soulève des problèmes de conflits et ne présenterait que peu d'avantages en raison du fichier externe.

Je crois que le mieux que vous puissiez faire est de minimiser le code en ligne, ce qui permettra d'économiser environ 400 octets, comme ceci:

<script>var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];(function(d){var g=d.createElement('script'),s=d.scripts[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document))</script>
0
Simon Hayter

Je dirais pas d'inconvénients. Si vous ajoutez le code au bas de votre fichier js principal, ce ne sera pas différent de l'ajouter en ligne dans le code HTML après le fichier js principal.

Les conflits de variables possibles peuvent être les mêmes, que ce soit ajouté en ligne dans la page HTML ou au bas de votre fichier js principal.

Je ne vois même pas comment cela pourrait ralentir car il appelle un fichier JavaScript externe. Il l’appelle quand même même s’il est ajouté en HTML, ce qui ne fait aucune différence. De plus, le fichier externe js est appelé ultérieurement car il est ajouté à l'aide de createElement. Par conséquent, même s'il n'existe pas, il ne devrait pas ralentir la page.

Vous pouvez même obtenir une augmentation de vitesse si faible que personne ne le remarquera à peine.

0
Marco Demaio