通过本地加载ga.js文件提高Google Anlytics性能

Google Anlytics 分析代码是异步加载的,一般来讲不会影响网页性能,但是技术部的网页性能报告里老是提到ga.js的状态为Aborted,说明ga虽然是异步跟踪,但某些情况下对网页性能与加载时间确实存在影响

Google分析代码到底会不会影响网页性能?本地托管ga.js是否可行?本文提供本地服务器托管ga.js的基本思路与实现方法。

Google Anlytics 分析代码是异步加载的,一般来讲不会影响网页性能,但是技术部的网页性能报告里老是提到ga.js的状态为Aborted。出现请求Aborted状态,意思着这个请求被终止,原因很简单,因为我们处于某个特定地区的网络环境(你懂的)。那如何解决非GA代码请求ga.js的加载速度?网上找到的方案不多于三种,但基本上都是修改跟踪代码,比如删除http:与https:的判断、忽略cookie残缺性检查等。但是笔者认为:提高ga.js可用性的彻底办法是“本地托管ga.js,将ga.js移植到本地服务器”。本文经过实测,与站长/SEO朋友们分享一下实现过程。

本地化ga.js:本地托管ga.js文件,网页性能/加载时间神马的都是浮云

Google分析代码到底会不会影响网页性能?

跟一些站长,或者网站数据分析师们交流时发现,大部分人的观点是“因为GA跟踪是异步跟踪模式,所以不会影响页面性能”。在这一点上,SEO祥子倒有自己的保留意见:是的,2009年底,google analytics推出GA异步跟踪代码,性能相比以前的同步跟踪代码在网页性能方面有了跨越式的提升。但是,祥子根据多年做站与SEO的经验,GA并非有了异步跟踪就万无一失了!

1。首先,我们要基于一个前提,GA使用的是异步统计模式,大大提高网页性能。但是我们不能忽略:客户端浏览器仍然要下载大约为35.9KB的ga.js文件,而这个文件是从位于美国 加利福尼亚州的Google服务器上下载。

2。我们的网络环境不是非常理想,虽然GOOGLE服务器的可能性很高, 但是对中国用户来讲,成功连接率有明显影响。我曾经查阅过相关的资料,中国用户打开www.google.com的可用率为92%左右,www.google-analytics.com/ga.js 的可能率高很多,但是也就是99.2%上下。这是2011年的数据,进入2012年,情况更糟糕,Google analytics网站更难打开。

3。ga.js浏览器缓存周期为12小时,而且用户访问使用GA分析的不同网站,加载的是同一个ga.js文件。意味着用户访问不同网站时不需重复加载文件。这是个很好的消息。 但是,鉴于google在中国大陆用户的连通率,现在使用GA分析系统的网站不是太多;受ga.js 12小时缓存周期的影响,如果用户是12小时前浏览过使用GA的网站,将重新加载文件;还有部分没有浏览器从来没有加载过ga.js的用户就更不用说了,网页性能肯定受到影响。

综上所述,GA代码虽然对网页性能影响的几率很小,但对部分用户来讲仍有加载ga.js文件失败的风险。

本地托管ga.js是否可行?

那么,将ga.js本地化能否有效跟踪访问?ga.js是否允许本地化?

查阅了google analytics帮助中心“本地托管 ga.js 文件”,Google是充许ga.js本地托管的,不过,它似乎并不鼓励这么做。

以下为GOOGLE关于ga.js本地化的说明:

(http://support.google.com/analytics/bin/answer.py?hl=zh-Hans&cbrank=3&cbid=-1wzhmp8d849hu&answer=1032389)

GOOGLE帮助中心:本地托管 ga.js 文件

虽然您可以下载文件进行检查,但我们建议用户不要自行托管 ga.js。

大部分人希望在本地托管 ga.js,是为了避免网站访问者在每次请求网页时都要从 Google 下载该文件。然而,无论 ga.js托管在何处,它都只需下载一次,然后就会缓存(保存)在访问者的浏览器中,以便用于后续网页浏览。

因此,对于您和您的访问者来说,从 Google 的服务器中引用 ga.js 文件最有利。这样能够确保您使用的是最新版本:只要有新功能和其他改进,立刻就会提供给您。这将有助于我们尽可能确保您报告的准确性。

本地服务器托管ga.js的基本思路:

托管ga.js到本地服务器的思路非常简单:

1。用程序下载ga.js到本地服务器;

2。定期检查ga.js文件,保持本地服务器为最新版本的文件;

3。修改并将跟踪代码植入网页;

4。成功发做分析数据,GA帐户接收报表。

从google服务器下载ga.js文件到本地服务器,更新周期--每天。

值得一提的是,ga.js文件会不定期的更新内容,如果使用旧版本的ga文件,可能导致跟踪出现问题,所以需要保持本地服务器ga.js为最新版本,我想一天更新一次,应该没有问题。

在网页里植入GA代码

本地服务器已有最新版本的ga.js文件,只需修改页面内跟踪代码即可,修改的主要内容就是把ga.src修改即可。如果你的网站不使用https://,那么可以对代码进行简化,删除网页是http:或https:的判断即可。以下为测试代码,经过验证,GA接收数据正常。

复制代码

代码如下:

<script type="text/javascript"> 
var _gaq = _gaq || []; 
_gaq.push([‘_setAccount‘, ‘UA-232915-7‘]); 
_gaq.push([‘_trackPageview‘]); 
(function() { 
var ga = document.createElement(‘script‘); ga.type = ‘text/javascript‘; ga.async = true; 
ga.src =‘http://www.giigift.com/本地服务器目录/ga.js‘; 
//因为不需判断页面是否属于https: 
//可以把ga.src = (‘https:‘ == document.location.protocol ? ‘https://ssl‘ : ‘http://www‘) + ‘.google-analytics.com/ga.js‘; 
//改为:ga.src =‘你的本地ga.js地址‘; 
var s = document.getElementsByTagName(‘script‘)[0]; s.parentNode.insertBefore(ga, s); 
})(); 
</script>

转自:http://www.jb51.net/yunying/70962.html

时间: 2024-10-25 17:21:09

通过本地加载ga.js文件提高Google Anlytics性能的相关文章

Vue 加载外部js文件

Vue.js  加载外部js文件 在项目内新建一个config.js //变量的定义 export var config = { baseurl:'http://172.16.114.5:8088/MGT2' } //函数的定义 export function formatXml(text) { return text } 使用外部的js <script> import {config,formatXml} from '../static/config.js' export default {

Chrome - 调试 Web Worker 加载的 js 文件

以前在使用 requirejs 时遇到过加载的 js 无法在控制台调试的情况,今天做了下总结 - 创建了 script 标签引入的 js 在 FF,Chrome 都能在调试器里找到. - Web Worker 引入的 js 无法直接在 FF,Chrome 的调试器里找到,需要在: Chrome 中:在引入的 js 文件顶部加上`//@ sourceURL=async_test.js`,然后就能在 (no domain) 中找到该 js FF 中:怎么处理还不会... eg: test.html

kettle转换JavaScript加载外部js文件

日常开发中,时常会出现这样一种情况.有大量的函数是通用的.而每个JavaScript里面写一遍,给维护带来很大的困扰.因而需要将公共的函数写在外部js文件中.这时就需要引入外部的公共文件了.下面是在转换里的JavaScript组件中引入外部公共js文件. //加载js文件 LoadScriptFile(getVariable("Internal.Transformation.Filename.Directory", "") +"/common_Functi

如何调试异步加载的js文件

最近在一个新的web项目中开发功能.这个项目的管理界面有一个特点,框架是固定的,不会刷新,每次点新的页面仅仅刷新一个div.div里面不是套的iframe,于是导致了一个问题,用浏览器无法调试异步加载页面里包含的js文件.简单的说就是在调试工具里面看不到异步加载页面里包含的js文件. 网上找到了一个解决办法,就是在需要调试的js文件顶部加一行代码: //@ sourceURL=msgprompt.js 注意,@符号和sourceURL间必须有空格.Chrome下效果: FireFox下也是OK的

模块化加载require.js

一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. <script src="1.js"></script> <script src="2.js"></script> <script src="3.js"></s

js模块化/js模块加载器/js模块打包器

之前对这几个概念一直记得很模糊,也无法用自己的语言表达出来,今天看了大神的文章,尝试根据自己的理解总结一下,算是一篇读后感. 大神的文章:http://www.css88.com/archives/7628(大神的文章写的很详细,建议先看完大神的文章) 一.js模块化 什么是js模块化,我们从历史说起. 1.一开始我们怎么写脚本?就是在html文件中用<script></script>写代码 这种方式的缺点:代码复用靠复制,基本是全局变量. 2.后来我们用js文件写代码,用<

Android 如何本地加载pdf文件

大部分app打开pdf文件是通过intent调起手机中能打开pdf文件的工具,来查看pdf文件,如果需求是,用户在app内下载好pdf文件后,不通过第三方的工具,本地打开. 这样的需求要怎么实现呢?上网查了一些资料,发现了一个很好用PDF开源库. 使用起来也很简单,首先添加PDFView的引用 compile 'com.github.barteksc:android-pdf-viewer:2.4.0' 布局中引用PdfView <LinearLayout xmlns:android="ht

使用js加载器动态加载外部Javascript文件

今天在网上找到了一个可以动态加载js文件的js加载器,具体代码如下: JsLoader.js 1 var MiniSite=new Object(); 2 /** 3 * 判断浏览器 4 */ 5 MiniSite.Browser={ 6 ie:/msie/.test(window.navigator.userAgent.toLowerCase()), 7 moz:/gecko/.test(window.navigator.userAgent.toLowerCase()), 8 opera:/o

asp.net MVC发布iis无法加载css,js和图片

今天真够郁闷的,遇到了在本地能运行的项目到了iis服务器那里就不行了,无法加载css,js和图片,这里说清楚一下先,关于asp.net 的MVC中这样的情况其实不少,但是之前遇到的是在visual studio运行的时候就已经不能加载css和js文件,那种情况一般都是路径的问题,改下页面代码就行,网上教程不少,而这个其实是一个CMS的开源系统.Orchard,国庆实在无聊,就想玩下这个asp.net MVC框架的CMS,而且是微软推荐的开源CMS,提到了就来说说这个吧,和国内的其他CMS对比起来