DEV Community

Manuel Canga
Manuel Canga

Posted on

Google Analytics y Analizadores WPO

Este post ya fue publicado inicialmente en 2019 en Google Analytics y Analizadores WPO

Cada vez veo más voces críticas contra Google PageSpeed Insights(y otros[analizadores WPO porque consideran incongruente que el propio Google marque su servicio estrella de tracking, Google Analytics, como un error. ¡Si es de la misma "casa"!, se les oye decir.

Google Analytics, como otros servicios de tracking, se come muchos recursos en la carga de una web. Es de alabanza que un servicio como Google PageSpeed Insights marque esto para que lo optimices. Para mí, sería una falta de credibilidad a su labor de herramienta WPO, si no lo hiciera. Pero claro, comprendo que quien no entiende de optimización, le eche la culpa a la herramienta. Me recuerda a la fábula de La zorra y las uvas de Esopo.

Una de las opciones que se usan para optimizar el script de Google Analytics es alojarlo bajo el propio alojamiento y entonces añadirle una fecha de caducidad para que los navegadores puedan cachearlo. Es algo que Google no recomienda, como es normal, porque entonces pierde todo el control de poder actualizar su código cuando quiera. Si no te decantas por esta opción, por lo que dice Google, piensa que esto es fácilmente salvable poniendo una tarea CRON para que, cada x hora, se descargue el script de Google Analytics.

Otra opción(perfectamente compatible con la anterior), que es la que yo uso, es cargar el script de Google Analytics cuando alguien hace scroll en la página. Esto puede parecer perjudicial porque da a pensar que no trackeará a todos los usuarios. Sin embargo, en mi opinión dará una métrica más correcta:

  • En primer lugar, no trackeará a aquellos que sean de dedo rápido, que hayan clicado a un enlace de tu web y, nada más darse cuenta del error, la quiten.
  • No trackeará robots, arañas o similares, que se presenten como usuarios ordinarios(ya que no mandan cabeceras de agente de usuario que identifiquen su naturaleza real).

Por otro lado, es una opción óptima, pues se cargará una vez que ya esté todo cargado(no ralentizará nada) y de manera transparente, mientras que el usuario está viendo tu página web.

Aquí está el código, el JavaScript que lo hace posible:

/**
 * Google Analytics y Anaizadores WPO - WebPerf - Manuel Canga
 * Perteneciente a post: https://trasweb.net/snippets/google-analytics-y-anaizadores-wpo
 */

var is_analytics_loaded = false;

load_googleAnalytics = function () {
    if (is_analytics_loaded) {
        return false;
    }

    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-xxxx', 'auto');
    ga('send', 'pageview');

    is_analytics_loaded = true;
};


window.addEventListener("scroll", function () {
    if (document.documentElement.scrollTop !== 0 || document.body.scrollTop !== 0) {
        load_googleAnalytics();
    }
}, true);
Enter fullscreen mode Exit fullscreen mode

Desde la línea 25 a la línea 29 le decimos al navegador que cuando el visitante haga scroll(se lance el evento scroll y posición de la barra de scroll diferente a la inicial) se lance la función load_googleAnalytics. Esta función comprueba(líneas 9 a 12) mediante una flag si se cargó ya o no, el Analytics en la página actual. Si no lo hizo, se carga el script de tracking(líneas 13 a 19). Date cuenta de que en la línea 18 va el ID de Google Analytics. En la línea 21, finalmente, activamos la flag para que no se vuelve a realizar la carga.


Si te ha gustado, no te olvides de compartir.

Top comments (0)