最近有朋友问,为什么我的网站打开时在执行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>

2 同步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. CentOS系统Kernel panic - not syncing: Attempted to kill init

    结果启动虚拟机出现如下问题: Kernel panic - not syncing: Attempted to kill init     解决方法: 系统启动的时候,按下'e'键进入grub编辑界面 ...

  2. Hybrid框架UI重构之路:一、师其长技以自强

    这两年在支撑公司的Hybrid框架的运维发展,让人确认这种移动开发方式确实是一条不错的路.混合应用这种开发方式降低开发难度,极大的提高开发效率,最重要的一点效果可以接近原生应用.框架的本身是需要持续不 ...

  3. swift学习笔记之-属性

    //属性 import UIKit //属性(Properties)详解 /* 存储属性(Stored Properties):类.结构体中,不能在枚举中 计算属性(Computed Properti ...

  4. 强大的JavaScript动画图形库mo.js

    最近在学习前端动画方面知识时发现了挺有趣的一个动画的图形库mo.js,页面效果真是酷炫,有兴趣的同学可以研究下:). 酷炫的效果: 以下是官方的demo效果,更多详情请查看 mo.js http:// ...

  5. 精通 CSS 选择器(二)

    补充了一些之前遗漏掉的选择器以及一些在 Selectors Level 4 中新定义的选择器. 属性选择器不区分大小写 [attribute="value" i],在 Select ...

  6. .NET破解之图片下载器

    自去年五月加入吾爱后,学习了三个月,对逆向破解产生了深厚的兴趣,尤其是对.NET方面的分析:但由于这一年,项目比较忙,事情比较多,破解这方面又停滞了许久,不知道还要好久. 前些天,帮忙批量下载QQ相册 ...

  7. SharePoint Online 创建门户网站系列之首页布局

    前 言 SharePoint Online中创建首页布局,一般都是首先将美工提供的效果图,切图成为Html + Css + Script的形式,然后,将所有资源文件传到SharePoint Onlin ...

  8. NMAP实用手册

    nmap在网络和渗透中使用相当频繁,相关教程也层出不穷.在此,我只整理出最实用的,言简意赅,方便自己,方便他人. 一.nmap介绍 NMAP,也就是Network Mapper,最早是Linux下的网 ...

  9. Microsoft Azure 的负载平衡器的Session Sticky

    Microsoft Azure 的负载平衡器是一种 Layer-4负载平衡器.Microsoft Azure 负载平衡器通过针对给定输入端点上接收到的流量计算哈希函数,在一组可用的服务器(虚拟机)之间 ...

  10. Android悬浮窗实现 使用WindowManager

    Android悬浮窗实现 使用WindowManager WindowManager介绍 通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得  ...