通过本地加载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本地化的说明:
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接收数据正常。
代码如下:
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>
通过本地加载ga.js文件提高Google Anlytics性能的更多相关文章
- 在电脑上用chrome浏览器调试android手机里的网页代码时,无法看到本地加载的js文件
在需要调试的js文件最顶部加上代码就可以看到了: console.log('haha'); debugger;
- Vue 加载外部js文件
Vue.js 加载外部js文件 在项目内新建一个config.js //变量的定义 export var config = { baseurl:'http://172.16.114.5:8088/M ...
- XSS漏洞之加载远程js文件
这次在对一个系统渗透测试过程中,发现一个XSS漏洞,可弹窗,并且没有httponly 但是在尝试加载远程js文件的时候发现,script标签被过滤掉了,准确的说应该是服务器后端在识别到输入内容有< ...
- ASP.NET MVC ScriptBundle 不能加载.min.js文件
比如我用 bundles.Add(new ScriptBundle("~/bundles/easyui").Include( "~/Content/easyui/jque ...
- ZK 最少限度加载页面js文件
官方文档说明: ZK Developer's Reference文档,章节为Minimize Number of JavaScript Files to Load,按照文档步骤执行,最后需在 web. ...
- kettle转换JavaScript加载外部js文件
日常开发中,时常会出现这样一种情况.有大量的函数是通用的.而每个JavaScript里面写一遍,给维护带来很大的困扰.因而需要将公共的函数写在外部js文件中.这时就需要引入外部的公共文件了.下面是在转 ...
- 如何调试异步加载的js文件(浏览器调试动态加载js)
描述 1:jQuery->var obj= new $.js_Obj():等异步加载js文件,执行方法. obj.method(): 2:页面估计不变,通过声明不同的js文件,进行页面内容的转换 ...
- Vue-cli / webpack 加载静态js文件的方法
一.html-webpack-plugin 编译 1.只需要在入口处定义一个chunks,如我们定义一个fuck模块 entry: { app: './src/main.js', fuck: ['./ ...
- js模块化/js模块加载器/js模块打包器
之前对这几个概念一直记得很模糊,也无法用自己的语言表达出来,今天看了大神的文章,尝试根据自己的理解总结一下,算是一篇读后感. 大神的文章:http://www.css88.com/archives/7 ...
随机推荐
- asp.net下载的方法
public void DownLoad( ){ string filePath = Server.MapPath( @"\UserFile\" );//这里注意了,你得指明要下载 ...
- 安卓蓝牙技术Bluetooth使用流程(Bluetooth详解)
一:蓝牙设备之间的通讯首要包含了四个进程 设置蓝牙设备 寻觅局域网内也许或许匹配的设备 衔接设备 设备之间的数据传输 二:详细编程完结 1. 发动蓝牙功用 首要经过调用静态办法getDefaultAd ...
- 移动终端学习一:css3 Media Queries简介
移动终端学习之一 css3 Media Queries简介 1.简介 别人写过的我就不重复了,来个链接:http://www.w3cplus.com/content/css3-media-querie ...
- iis的路径
每次打开iis管理器查看iis指定路径下的文件过于麻烦,而且iis管理器耗资源,以下是iis的路径,以及其对应在本地磁盘的地址 SP2013\Sites\SharePoint - 80\_contro ...
- oracle 11g卸载方法
在网上查看了很多卸载oracle11g的方法,但是感觉都太复杂了,没有使用,最后查看了很多资料,得到一种比较简单,而且能完全卸载的方法: 在根目录下运行c:\app\Administrator\pro ...
- 什么是NSTimer
本文主要是介绍什么是NSTimer,具体使用请参考上一篇博客. 1.什么是NSTimer? NSTimer就是timer就是一个能在从现在开始的后面的某一个时刻或者周期性的执行我们指定的方法的对象. ...
- bzoj2732: [HNOI2012]射箭 半平面交
这题乍一看与半平面交并没有什么卵联系,然而每个靶子都可以转化为两个半平面. scanf("%lf%lf%lf",&x,&ymin,&ymax); 于是乎就有 ...
- extern “C”的作用
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言,C++保留了一部分过程 式 ...
- NFS,FTP
一. NFS1. NFS简介NFS全称是network file systemNFS允许一个系统在网络上与他人共享目录和文件.通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件. 假 ...
- 获取DOM的真实节点
<script type="text/babel"> var Myelement=React.createClass({ handleClick:function(){ ...