Script Google Analytics
Todos los que utilicen Google Analytics sabrán que la llamada al script se hace des de Google.
Inconvenientes hay muchos, los más importantes, si Google se cae (como hace un par de días sucedió) el script ga.js deja de funcionar y por lo tanto tu web se ve afectada con muchísimos errores, aparte de la lentitud en carga de la web.
Otro inconveniente es cuando haces la petición del script a Google y en esos momentos Google tiene muchas peticiones a la vez, pues te tendrás que esperar tu turno, por lo tanto más lentitud en carga de tu web.
Por ello he decido publicar una noticia donde explico algunas alternativas bastantes interesantes.
En anieto2k, nos explican una posible solución bastante efectiva.
var sc = document.createElement("script");
sc.type = "text/javascript";
// SRC de Google
sc.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.2/jquery.min.js?rand=' + Math.random();
var timer = setTimeout(function(){
if (typeof jQuery == 'function') return;
var sc = document.createElement("script");
sc.type = "text/javascript";
// SRC local
sc.src = 'http://www.anieto2k.com/wp-content/themes/anieto2k08/js/jquery-1.2.6.min.js';
document.getElementsByTagName("head")[0].appendChild(sc);
// Tiempo en milisegundos que estimamos pueda tardar.
}, 200);
sc.onload = sc.onreadystatechange = function(e){
clearTimeout(timer);
}
document.getElementsByTagName("head")[0].appendChild(sc);
Este pequeño script lo que hace es comprobar si el servicio está disponible, en caso de no estar disponible no lo deja ejecutar.
Sin embargo, en askapache.com he visto como acelerar la velocidad de carga del script. La idea es tener el script ga.js en nuestro propio servidor, hacemos lo siguiente:
Cambiamos esto:
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-xxxxx-xx");
pageTracker._initData();
pageTracker._trackPageview();
</script>
Por este otro script:
<script src="http://www.tudominio.com/js/google-analytics.js" type="text/javascript"></script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-xxxxxx-xx");
pageTracker._initData();pageTracker._trackPageview();
</script>
Con que el código ga.js lo pueden modificar para hacer algunas mejoras, tendremos que crear un cron para que cada cierto tiempo compruebe si ha habido cambios en el fichero, si se diera el caso, el cron copiaría el fichero y lo almacenaría en un directorio temporal y lo substituiría en el directorio dónde se encuentre en el servidor.
#!/bin/sh
# TMP DIRECTORY
MYTMP=/tmp/
# SAVE ga.js HERE
INSTALL_IN=/var/www/nombredetudominio.com/httpdocs/js/
# RESOURCE URLS
GOOGLE_GA_URL=http://www.google-analytics.com/ga.js
# USER-AGENT
UA="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
# CD TO TMP DIRECTORY
cd $MYTMP
# DOWNLOAD THE FILE
curl --header "Pragma:" -f -s -A "${UA}" -m 1800 --retry 15 --retry-delay 15 --max-redirs 8 -O $GOOGLE_GA_URL
# GIVE FILE CORRECT PERMISSIONS
chmod 644 $MYTMP/ga.js
# COPY FILE TO SITE DIRECTORY
cp -r $MYTMP/ga.js $INSTALL_IN
# RETURN TO OLDPWD
cd $OLDPWD
exit 0;
¿Qué pensáis de estas dos posibles soluciones, os parecen factibles?
¿Tenéis alguna otra idea mejor o similar a las comentadas?
¡Dime tu opinión!