最近有朋友问,为什么我的网站打开时在执行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. php中的常用数组函数(八) 排序函数汇总(sort、rsort、usort、asort、uasort、arsort、ksort、uksort、krsort、natsort、natcasesort、array_multisort)

    测试环境:php5.3.29 sort_flags 可以用以下值改变排序的行为: 排序类型标记: SORT_REGULAR - 正常比较单元(不改变类型) SORT_NUMERIC - 单元被作为数字 ...

  2. 引用计数 vs. GC

    内存管理问题 内存管理是编程过程中的一个经典问题,早期在 C 语言时代,几乎都靠 malloc/free 手动管理内存.随着各个平台的发展,到现在被广泛采用的主要有两个方法: 引用计数 (ARC,Au ...

  3. Baraja演示15种不同的洗牌特效

      实例演示 下载地址 实例代码 实例演示 实例代码 <div class="container"> <header class="clearfix&q ...

  4. Dewplayer 音乐播放器

    Dewplayer 是一款用于 Web 的轻量级 Flash 音乐播放器.提供有多种样式选择,支持播放列表,并可以通过 JavaScript 接口来控制播放器. 注意事项: 该播放器只支持 mp3 格 ...

  5. Python将Excel生成SHP

    #!/usr/bin/env python # -*- coding: utf-8 -*- import gdal import xlrd import shapefile # open the ex ...

  6. 客户端调用服务端webservice的端口问题

    今天有一个同事过来问:他有一个程序在A服务器上调第三方B服务器短信发送服务接口(webservice),无论是否发送成功,服务接口都会返回状态.现在客户要做每一个服务器 做入站端口管控,一切不必要的端 ...

  7. ubuntu制作本地源

    背景 平时apt-get install安装软件时,下载的deb文件都会存放在/var/cache/apt/archives/下,为了今后重装或给别人用,特别是没有网络时,这些deb文件实际上是可以派 ...

  8. Windows下修改Android手机的hosts

    Windows下修改Android手机的hosts 1.首先,手机是Root过的. 2.连接手机和电脑, adb shell 进入命令行. 3.获取root用户权限: su -root 4.不知道为何 ...

  9. gridView获得每行的值

    前台代码: <asp:GridView ID="GridView1" runat="server" DataKeyNames="ID" ...

  10. objective-c系列-@Property&点语法

    //解释 property后边的圆括号中的修饰词的含义: //          nonatomic  非线程安全  非原子操作  特点是: 操作变量的效率高 //          atomic   ...