Google 未发送分析计时事件

Google Analytics timing event not sent

编辑:这是实际上不起作用的代码

(为了简化问题我做了修改)

<script>
    // save startTime at the begginning of the page
    var _startTime = new Date().getTime();
</script>
<!--
    ... page code here ...
-->
<script>
    //Google Analytics code
    (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-XXXXXX-Y', 'auto');
    ga('send', 'pageview');

    (function (w,d,$,ga,createFunction) {

        createFunction = function(timingVar) {
            return function() {
                var time = (new Date().getTime() - _startTime);

                if (time > 0) {
                    ga('send', 'timing', 'performance', timingVar, time, 'desktop');
                } //if

                if (console && console.log) console.log(timingVar +':'+ time);

            };
        };

        $(d).on('ready',createFunction('page ready'));
        $(w).on('load',createFunction('page load'));
    })(window,document,jQuery,ga);
</script>

仍然不确定为什么此代码不起作用。

这是我的原始问题(代码有效)

我正在尝试使用 Google Analytics 的 User Timings 功能来跟踪不同场景下的页面加载时间。

我无法获取在页面加载时发送的计时命令。这是我用来实现此目的的代码。

<script>
    // save startTime at the begginning of the page
    var _startTime = new Date().getTime();
</script>
<!--
    ... page code here ...
-->
<script>
    //Google Analytics code
    (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-XXXXXX-Y', 'auto');
    ga('send', 'pageview');

    // track document ready even time
    $(document).on('ready',function() {
        var time = (new Date().getTime() - _startTime);

        if (time > 0) {
            ga('send', 'timing', 'performance', 'page ready', time, 'desktop');
        } //if

        console.log('page ready:'+ time);
    });

    // track window load time
    $(window).on('load',function() {
        var time = (new Date().getTime() - _startTime);

        if (time > 0) {
            ga('send', 'timing', 'performance', 'page load', time, 'desktop');
        } //if

        console.log('page load:'+ time);
    });


</script>

我正在 Chrome 中对此进行测试并安装了 Google Analytics Debugger 扩展程序。

我查看控制台,看到正在发送 pageview 和 timings "page ready" 命令,但从未发送 timings "page load" 命令。

两者 console.log() 都显示了正在触发的事件,但是没有数据发送到 Google Analytics 用于计时 "page load" 命令。

这是我完成的其他验证:

这是我在只有页面浏览量和计时页面加载事件时得到的结果:

关于未在 window 的加载事件中发送命令的可能原因的任何想法?

时序报告的默认采样率为 1%

这不是错误。这是关于跟踪器本身的默认配置。此功能受采样限制,此功能默认具有 1% 的采样率用于时序跟踪功能。所以在控制台中看到事件的可能性非常低。

解决方案

启动跟踪器时设置采样率:

ga('create', 'UA-XXXX-Y', {'siteSpeedSampleRate': 50});

文档

字段参考: https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#siteSpeedSampleRate

功能描述: https://developers.google.com/analytics/devguides/collection/analyticsjs/user-timings

您实际 运行ning 的代码与您粘贴到此页面上的代码肯定有所不同。我觉得这里的一切都很好,如果我 运行 你的确切代码,它就可以工作。

你可以看看这个jsbin demo来证明。请注意如何发送三个匹配:1 个综合浏览量和 2 个定时匹配。
http://jsbin.com/kafeduweme/edit?html,console