Google 是一家伟大的互联网公司,其Analytics 统计代码,各个大站小站也都在免费的用。月初,Google 为我们带来了圣诞礼物,那就是新的统计代码支持异步加载了。
大家对这个异步加载,及其新的功能以及改进的地方可能不太清楚,小小子也只是简单的看了一下介绍,在这里简单的和大家谈一谈,纯聊天,勿攻击。~~
改进的原因
- 不要让用户等待你的js下载
- 把js放在页面最下面(大家通常也是这么做的)
- 使js异步加载,也就是说该下载的都完事了,再来下载js,不影响正常使用
- 使统计的数据更准确
熟悉网络的人可能都知道,js加载是会阻塞进程的,也就是说其并不会与其网页内容并行下载。那么当一个脚本文件太大,或者是服务器宕机(Google基本不会,不过会被河蟹,你仍然访问不了)那么就会使正常的页面无法展现。
解决这个问题通常有两种办法(也许更多,欢迎指证)
作为网站的管理员,我们当然希望使用的统计代码告诉我们的统计数字更加准确。然而在以前其实这个数字是不够准确的。虽然现在也一定并不完全符合事实,但是Google在让它无限接近于真实情况。
为什么数字是不准确的,因为有些人操作可能非常快,在你的统计代码还没有下载完全的时候就跳出你的网站,或者是去浏览其他子页面,这样你前面的统计其实是并不准确的。
Google是如何处理的
说实话,这个话题有点玩大了的感觉。因为Google的统计代码及其原理我不熟,只是从其官网上的话来简单的翻译了一下,并且看了一下大致实现。肯定是有不准确的地方,大家多多担待。
看一下新的实现方式吧,就着方式是更好说一些,大家可以去看原文介绍(自备梯子),嗯:
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
(function() { var ga = document.createElement('script'); ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; ga.setAttribute('async', 'true'); document.documentElement.firstChild.appendChild(ga); })();
Google采用了一个匿名函数来使你的统计ga.js延时加载,这样不会影响用户等待你js的下载时间,这对应于上面的第一点。
然而延时加载怎么记住数据呢?别急,看到那了个_gaq没有?这可是ga.js新增的东西。
总结发言:
利用此对象可以使每个用户来的时候都向该对象里面push一个_trackPageview,这样ga.js下载下来的时候会自动来翻译_gaq里面带的数据的,这样使你的统计数据更加准确。
言尽于此,多了我也不清楚了,里面的代码不仔细看是不会明白的。有时间再深入研究一下,在这里只是想说Google 真牛。
Google只要动动手指就能搞出个异步加载了,Ads早实现了这个功能