最近有朋友问,为什么我的网站打开时在执行google analytics有较长的停顿时间。要如果解决?这个问题其实很早就有,最好的解决办法是将网站所有页面的传统追踪代码统一替换为最新的异步追踪代码。不过如果你已经进行了很多个性化的追踪代码定制,这会是个不小的工作。因为异步追踪代码和传统追踪代码在很多方面不能通用。如:虚拟页面,事件追踪等等。需要逐个修改。所以,如果你还不想替换为异步追踪代码,但又想解决这个问题,那么可以试试下面的办法。通过优化传统的google analytics追踪代码来减少停顿时间。

追踪代码的功能简述:

在优化前,先看下页面内追踪代码的主要功能。传统的google analytics追踪代码分为两部分。第一部分动态确定当前页面的HTTP协议是否加密。然后使用HTTP或HTTPS协议来请求ga.js文件。第二部分包括所属的配置文件ID,执行页面追踪所须的方法。及JavaScript的错误处理。同时,所有的追踪代码定制内容也都会包含在这部分。

追踪代码的加载流程:

其次还需要了解追踪代码的工作流程。就是说,在产生停顿的这段时间里,google analytics的追踪代码都在做什么?当打开一个带有google analytics追踪代码的页面时,追踪代码会首先判断所在页面的类型,然后向对应的地址(http://或https://)请求ga.js文件。ga.js文件在执行的过程中检查cookie的内容并收集其他的信息。最后通过请求一个_utm.gif图片,将所有收集到的信息附在参数中返回google服务器。

粗略的来看,在这段时间中google analytics追踪代码完成了下面4个操作。

1判断所在页面类型

2请求ga,js文件

3执行ga.js文件

4收集并返回数据

按照上面的4个步骤,我们找出可以进行优化的部分。尽量减少停顿的时间。

优化追踪代码的三种方法:

1省略页面类型判断

google analytics追踪代码第一部分的设计是用来自动匹配加密和非加密两种页面类型的。对于没有加密页面的网站,可以省略这里的判断。将第一部分直接写成

<script type=”text/javascript” src=”http://www.google-analytics.com/ga.js”></script>

当页面被访问时,代码不会判断当前页面的类型。而是直接向http://www.google-analytics.com/ga.js这个地址请求JS文件。如果你的网站既有加密页面也有非加密页面,也可以写成这种模式

<script type=”text/javascript” src=”https://www.google-analytics.com/ga.js”></script>

同步ga,js文件加载速度

Google analytics的服务器在美国。ga.js文件大约有25K。当访客第一次访问你网站时,页面追踪代码需要从服务器上下载这个ga.js文件。(在后续的访问中,如果js文件没有更新,GA会直接使用本地缓存中的ga,js文件。)

这里可以将ga.js文件保存下来,上传到自己网站的根目录下。然后修改追踪代码中的文件请求地址。例如:假设我将ga.js文件上传到自己博客的根目录下。同时修改追踪代码第一部分的请求地址。

<script type=”text/javascript” src=”http://bluewhale.cc/ga.js”></script>

这样,ga.js文件的加载速度就和你的网站同步了。但需要注意的是,google会不定期的更新ga.js文件。所以你也需要定期更新这个ga,js文件。保持与google最新版本同步。

PS:其实从google服务器上下载这个js文件时速度并不慢,更多的可能是心理因素。

3省略cookie完整性检查

在前面关于cookie的文章中曾经介绍过,每个cookie值的第一组数字都是域的哈希值,用来检查cookie的完整性。这个功能在跨根域追踪时是要被禁用的。在这里,你也可以关闭掉这个功能来提高ga,js代码的执行效率。方法是在追代码的第二部分加入pageTracker._setAllowHash(false);关闭域哈希值后,ga,js每次执行时将不再检查cookie的完整性。

google-analytics.com的更多相关文章

  1. 使用 Google Analytics 跟踪 JavaScript 错误

    Google Analytics(谷歌分析)不仅仅是一个流量统计工具,你还可以用它来测量广告活动的有效性,跟踪用户多远到所需的页面流(从点击广告到购物车到结账页面)获取,并基于用户的信息设置浏览器和语 ...

  2. Google Analytics统计代码GA.JS中文教程

    2010-12-06 11:07:08|  分类: java编程 |  标签:google  analytics  ga  js  代码  |举报|字号 订阅     Google Analytics ...

  3. Google Analytics与百度统计原理

    Google Analytics与百度统计的统计数据都是有差异的,而且差异非常大,其根本原因在于数据统计的原理和机制是不同的.下面分享一下两位博友李鑫和赵高欣对Google Analytics与百度统 ...

  4. Google Analytics Premium VS Adobe Analytics

    在很久以前的互联网年代,Google收购了一家名为Urchin的公司,进而演化诞生了Google Analytics.当Goochin(Google / Urchin)首次亮相时,它被所有人称为“新的 ...

  5. 用Google Analytics跟踪JavaScript Errors (译)

    通过custom events来实施 // Track basic JavaScript errors window.addEventListener('error', function(e) { _ ...

  6. Google Analytics SEO 实时 网站 访问量 统计

    /*************************************************************************** * Google Analytics SEO ...

  7. Google Analytics:为链接点击设定事件追踪的方法

    在 Google Analytics 中,可以使用 Event Tracking 功能跟踪自定义的事件.但是,如果你要跟踪的是一个链接点击,那么单纯这样写则很有可能导致漏掉许多事件: <a hr ...

  8. 【转载】国内网站博客数据统计选免费Google Analytics还是百度统计

    [转载]国内网站博客数据统计选免费Google Analytics还是百度统计 Google Analytics谷歌统计是我用的第一个网站统计工具,当然现在也一直在用.Google Analytics ...

  9. 【转载】Google Analytics 使用图文全攻略

    转载自:Google Analytics 使用图文全攻略 最近一段时间,因为工作的需要,小励使用GA(GA是Google Analytics的简称)比较频繁,所以花时间研究了一下,从不太了解到会使用( ...

  10. [翻译]在Django项目中添加谷歌统计(Google Analytics)

    原文:<Google Analytics tracking code into Django projects, the easy way> 对我来说,制作一个可扩展的Django应用随时 ...

随机推荐

  1. python 函数小实例

    1.判断一个数字是否为素数: import math # -----------------判断一个数是否是素数------------------ def sushu(a): i=1 for i i ...

  2. MYSQL数据库如何赋予远程某个IP访问权限

    1. 授权用户root使用密码jb51从任意主机连接到mysql服务器:代码如下:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'jb ...

  3. 关于lr调用jar在vuser中可以运行,但是controller中却报错的问题

    如题,错误如下:javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.DocumentBuilder ...

  4. 一款经典的jQuery kxbdMarquee 无缝滚动插件

    <marquee> 曾是 IE 下独有的一个走马灯效果的标签,其他浏览器并不兼容,于是出现了使用 JavaScript 来模拟该效果的插件. 版本: jQuery v1.3.2+ 在线实例 ...

  5. 【CSS3】 CSS3:弹性盒子(Flex Box)

    Flex布局是什么 如何指定一个容器为Flex布局 Flex的基本语法 display flex-direction justify-content align-items flew-wrap ali ...

  6. go语言 匿名变量

    我们在使用传统的强类型语言编程时,经常会出现这种情况,即在调用函数时为了获取一个值,却因为该函数返回多个值而不得不定义一堆没用的变量.在Go中这种情况可以通过结合使用多重返回和匿名变量来避免这种丑陋的 ...

  7. 更改SAP的字段翻译

    TC:SE63在SAP用户选择屏幕中,用鼠标选定一个栏位后按F1键,可以看到SAP对其具体解释,通常这种解释文本分为两部分,一部分为标题,一部分为正文.比如:  有时,SAP的翻译让人感觉很别扭,对于 ...

  8. 如何对sharepoint图片库的文件夹的图片按照时间排序并分页显示

    /// <summary> /// 获取图片库第一层文件夹--根据文件夹名称排序 /// </summary> /// <param name="siteUrl ...

  9. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q9-Q12)

    Question 9 You are designing an external binary large object (BLOB) store provider by implementing t ...

  10. 将Android系统源码导入ecplise

    Android系统源码中带有个IDE的配置文件,目录为:development/ide/ 如果要用eclipse导入查看系统源码,则将development/ide/eclipse/.classpat ...