Pregunta

Actualizar http://jsfiddle.net/musicisair/rsKtp/embedded/result/


Google Analytics instala 4 galletas que serán enviados con todas las peticiones a ese dominio (y Ofset sus subdominios). De lo que puedo decir en realidad no hay ningún servidor los utiliza directamente ; que sólo son enviados con __utm.gif como un parámetro de consulta.

Ahora, obviamente, Google Analytics lee, escribe y actúa sobre sus valores y que tendrán que estar a disposición de la secuencia de comandos de seguimiento GA.

Por lo tanto, lo que me pregunto es si es posible:

  • reescribir las galletas __utm* a almacenamiento local después de ga.js les ha escrito
  • eliminarlos después ga.js ha corrido
  • reescribir las galletas de la parte posterior almacenamiento local a la forma de galletas justo antes de ga.js ellos
  • lee
  • empezar de nuevo

O mono parche ga.js utilizar el almacenamiento local antes de que comience la cookie de lectura / escritura parte.

Es evidente que si vamos tan lejos de la forma de eliminar las cookies de __utm* vamos a querer utilizar también la variante asíncrono de Analytics.

Estoy adivinando el voto negativo fue porque no tenía una pregunta. DOH!

Mis preguntas son:
¿Se puede hacer como se describe anteriormente?
Si es así, ¿por qué no se ha hecho?


I tienen una plantilla por defecto repetitivo HTML/CSS/JS que pasa YSlow, Page Speed ??y Auditoría de Chrome con las puntuaciones perfecto en la zona. Realmente estoy buscando una manera de exprimir los restantes bytes de cookies de Google Analytics en los navegadores que soportan el almacenamiento local.

¿Fue útil?

Solución

Utilice esta:

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

if(window.localStorage) {
    ga('create', 'UA-98765432-1', 'www.example.com', {
      'storage': 'none'
      , 'clientId': window.localStorage.getItem('ga_clientId')
    });
    ga(function(tracker) {
      window.localStorage.setItem('ga_clientId', tracker.get('clientId'));
    });
}
else {
    ga('create', 'UA-98765432-1', 'www.example.com');
}
ga('send', 'pageview');

En primer lugar, comprobar si se admite localStorage. Si es compatible entonces la opción 'storage': 'none' desactivará las cookies. Ahora podemos establecer el clientId de localStorage. Si está vacío, Google Analytics generará una nueva para nosotros. Ahorramos el ClientID nuevo (o existente) en localStorage después de que las cargas de seguimiento.

Si no se admite localStorage, sólo tiene que utilizar el método de análisis regular. Después de la inicialización que envío una visita de página a través de ga('send', 'pageView').

Además, echa un vistazo a este golpe seco: http://plnkr.co/MwH6xwGK00u3CFOTzepK

Otros consejos

Algunos experimentación en Chrome muestra que puede ser posible utilizar captadores y definidores de document.cookie parche para esto, algo como:

document.__defineGetter__('cookie', function () {
    // Replace this with code to read from localstorage
    return "hello";
});
document.__defineSetter__('cookie', function (value) {
    // Replace this with code to save to localstorage
    console.log(value);
});

ga.js. (o cualquier otro JavaScript) podría ejecutar y acceder a cookies de forma normal, sólo serían nunca se pasa al servidor.

Obviamente, esto sólo funcionará en algunos navegadores. Los navegadores en los que no funciona tendrá que caen de nuevo a las cookies normales.

Hay algunas ideas relacionadas en esta pregunta: ¿Es posible a document.cookie simulacro en JavaScript?

Sí se puede hacer. Sólo tiene que solicitar la __utm.gif con los parámetros. El resto de los datos sólo se utiliza para hacer el seguimiento de la fuente, la hora de inicio de sesión y / o visitas anteriores.

Se puede transferir fácilmente las galletas en ambos sentidos, por lo que su primer enfoque debería funcionar bien.

Si su segundo enfoque funciona ... no estoy seguro. No sé lo suficiente el código ga.js buena para estimar wheter que sería o no sería fácilmente posible.

También hay una tercera opción, ejecutar su propia versión de ga.js. Usted no está obligado a utilizar la versión de Google.

¿Se puede hacer como se describe anteriormente?

¿Por qué no se ha hecho?

  1. Las cookies son pequeñas, no hay mucho beneficio si se utiliza dominios sin cookies para todo su contenido estático
  2. que es menos conveniente ya que muchos de los navegadores no soportan todavía
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top