本文介绍了将Google Analytics(分析)Cookie转换为本地/会话存储的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

更新






Google Analytics(分析)会设置4个Cookie,并设置其子域)。从我可以告诉没有服务器实际使用它们直接;它们只会以下执行 li>在 ga.js 之前,将本地存储的Cookie重写为cookie表单

  • 重新开始



  • 或者,猴子补丁 ga.js 在开始使用本地存储之前使用本地存储



    显然,如果我们走得太远,可以移除 __ utm * cookies,我们也希望使用Google Analytics(分析)的Async变体。



    我猜想下投票是因为我没有提出问题。 DOH!



    我的问题是:

    可以如上所述完成吗?

    如果是,

    HTML / CSS / JS 样板模板,通过YSlow,PageSpeed和Chrome的审计,接近完美的分数。我真的在寻找一种方法,在支持本地存储的浏览器中从Google Analytics(分析)中压缩剩余的Cookie字节。


    解决方案

    使用此:

     (function(i,s,o,g,r,a,m){i [ 'GoogleAnalyticsObject'] = r; i [r] = i [r] || function(){
    (i [r] .q = i [r] .q || [ (0); a.async = 1; a.src = 0; a = s.createElement(o),
    m = s.getElementsByTagName(o) 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');

    首先,检查 localStorage 。如果支持,则'storage':'none'选项将禁用Cookie。现在我们可以从localStorage设置clientId。如果为空,Google Analytics(分析)会为我们生成一个新的。



    如果不支持 localStorage ,则会将新的(或现有的)clientid保存在localStorage中。我只是使用常规的分析方法。初始化后,我通过 ga('send','pageView')发送pageView。



    出这个plunk:


    UPDATEhttp://jsfiddle.net/musicisair/rsKtp/embedded/result/


    Google Analytics sets 4 cookies that will be sent with all requests to that domain (and ofset its subdomains). From what I can tell no server actually uses them directly; they're only sent with __utm.gif as a query param.

    Now, obviously Google Analytics reads, writes and acts on their values and they will need to be available to the GA tracking script.

    So, what I am wondering is if it is possible to:

    • rewrite the __utm* cookies to local storage after ga.js has written them
    • delete them after ga.js has run
    • rewrite the cookies FROM local storage back to cookie form right before ga.js reads them
    • start over

    Or, monkey patch ga.js to use local storage before it begins the cookie read/write part.

    Obviously if we are going so far out of the way to remove the __utm* cookies we'll want to also use the Async variant of Analytics.

    I'm guessing the down vote was because I didn't ask a question. DOH!

    My questions are:
    Can it be done as described above?
    If so, why hasn't it been done?


    I have a default HTML/CSS/JS boilerplate template that passes YSlow, PageSpeed, and Chrome's Audit with near perfect scores. I'm really looking for a way to squeeze those remaining cookie bytes from Google Analytics in browsers that support local storage.

    解决方案

    Use this:

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

    First, I check if localStorage is supported. If it is supported then the 'storage': 'none' option will disable cookies. Now we can set the clientId from localStorage. If it is empty, Google Analytics will generate a new one for us. We save the new (or existing) clientid in localStorage after the tracker loads.

    If localStorage is not supported, I just use the regular analytics method. After the initialization I send a pageView via ga('send', 'pageView').

    Also, check out this plunk: http://plnkr.co/MwH6xwGK00u3CFOTzepK

    这篇关于将Google Analytics(分析)Cookie转换为本地/会话存储的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

    08-28 08:39