最近给网站加上了 Google Analytics(大概两年前,我刚换到 Hexo 的时候,我就把统计撤了,看到 LWL 的群里在晒统计结果,心里痒痒又加上了)。但是直接使用 Google Analytics 有一点弊端:一是会被各种广告屏蔽软件屏蔽,导致统计结果不准确;二是在国内加载不稳定。

因此,我给 Google Analytics 加了一层代理,优化加载速度同时防止被屏蔽。

GitHub Repo (求 Star?

目前关于 Google Analytics 大致有两种方案,一种是本文使用介绍的,另一种是利用 Nginx 的 post_action。

前者需要多一次 HTTP 请求,后者有点麻烦,还要过滤搜索引擎 UA,不适用于使用 CDN 的网站。

本文所采用的方案是基于 Google Analytics 异步请求(服务端请求) 提供的代码修改的 Go 版本。

使用方法

1. 使用我提供的服务

将下面的代码加到你的网站的任意位置,同时修改 "UA-xxxx-x" 为你自己的跟踪代码。

<script>
!function(a,b,c,d,e){var f=c.screen,g=encodeURIComponent,h=["ga="+a,"dt="+g(d.title),"dr="+g(d.referrer),"ul="+(e.language||e.browserLanguage||e.userLanguage),"sd="+f.colorDepth+"-bit","sr="+f.width+"x"+f.height,"vp="+Math.max(d.documentElement.clientWidth,c.innerWidth||0)+"x"+Math.max(d.documentElement.clientHeight,c.innerHeight||0),"z="+ +new Date];c.__ga_img=new Image,c.__ga_img.src=b+"?"+h.join("&")}("UA-xxxx-x","https://ga.giuem.com",window,document,navigator,location);
</script>

目前已经部署海外线路(由 CloudFlare 提供),国内为腾讯云上海机房

2. 自己部署服务

  1. 安装

你可以选择自己 编译 或者从 release 下载我编译好的二进制文件。

  1. 运行

./ga_proxy [arguments]

-d, -debug 输出调试信息
-s, -skip_ssl 跳过 SSL 验证
-l, -listen 监听地址

要使用后台运行,你可以借助 nohupscreenDocker

  1. 添加 JavaScript 代码

把上面的那段代码里的 "https://ga.giuem.com" 改成你自己的地址就行了。

使用效果

整个请求花费 33 ms, 156 B 流量可以说是非常快了。服务器的 Ping 值在 29 ms 左右,中间 4 ms 的损失主要花在 SSL 上了,速度还是挺不错的。

相比之下,原生的请求先加载了一个 12.3 KB 大小的 JS 文件,然后才发送统计,总耗时 300 ms,emmmmm 我就不作过多评价了。


来源:https://www.giuem.com/google-analytics-loading-optimize/