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" 命令。
这是我完成的其他验证:
- 时间的值总是一个整数。
- 如果我只有"page load"计时命令也没关系
这是我在只有页面浏览量和计时页面加载事件时得到的结果:
关于未在 window 的加载事件中发送命令的可能原因的任何想法?
时序报告的默认采样率为 1%
这不是错误。这是关于跟踪器本身的默认配置。此功能受采样限制,此功能默认具有 1% 的采样率用于时序跟踪功能。所以在控制台中看到事件的可能性非常低。
解决方案
启动跟踪器时设置采样率:
ga('create', 'UA-XXXX-Y', {'siteSpeedSampleRate': 50});
文档
功能描述:
https://developers.google.com/analytics/devguides/collection/analyticsjs/user-timings
您实际 运行ning 的代码与您粘贴到此页面上的代码肯定有所不同。我觉得这里的一切都很好,如果我 运行 你的确切代码,它就可以工作。
你可以看看这个jsbin demo来证明。请注意如何发送三个匹配:1 个综合浏览量和 2 个定时匹配。
http://jsbin.com/kafeduweme/edit?html,console
编辑:这是实际上不起作用的代码
(为了简化问题我做了修改)
<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" 命令。
这是我完成的其他验证:
- 时间的值总是一个整数。
- 如果我只有"page load"计时命令也没关系
这是我在只有页面浏览量和计时页面加载事件时得到的结果:
关于未在 window 的加载事件中发送命令的可能原因的任何想法?
时序报告的默认采样率为 1%
这不是错误。这是关于跟踪器本身的默认配置。此功能受采样限制,此功能默认具有 1% 的采样率用于时序跟踪功能。所以在控制台中看到事件的可能性非常低。
解决方案
启动跟踪器时设置采样率:
ga('create', 'UA-XXXX-Y', {'siteSpeedSampleRate': 50});
文档
功能描述: https://developers.google.com/analytics/devguides/collection/analyticsjs/user-timings
您实际 运行ning 的代码与您粘贴到此页面上的代码肯定有所不同。我觉得这里的一切都很好,如果我 运行 你的确切代码,它就可以工作。
你可以看看这个jsbin demo来证明。请注意如何发送三个匹配:1 个综合浏览量和 2 个定时匹配。
http://jsbin.com/kafeduweme/edit?html,console