Google Analytics 异步请求(服务端请求)

感谢伟大的祖国,使得好好的 Google,必须折腾一番才能好好的用起来。Google 搜索如此,Google Analytics 肯定也不例外(网上据说 Google Analytics 没有被屏蔽)。

Google Analytics 支持服务端发送统计信息(via:Jerry Qu),而通过服务端统计可以解决 Google Analytics 连接缓慢问题,提高页面打开速度。

Google Analytics 服务端发送统计信息是通过「用户 <==> 博客/网站服务器 <==> Google Analytics 服务器」这样的方式来通信,而不是通常的「用户 <==> Google Analytics 服务器」,而且使用了非阻塞的方式请求(需要 fastcgi)。

下面是代码:

首先是 js 代码,添加到需要追踪的每个页面,也可以集成到主题的 js 文件。

//Google Analytics 异步请求(服务端请求)
function ga(){!function(e,n,o){var t=e.screen,a=encodeURIComponent,r=["dt="+a(n.title),"dr="+a(n.referrer),"ul="+(o.language||o.browserLanguage),"sd="+t.colorDepth+"-bit","sr="+t.width+"x"+t.height,"vp="+e.innerWidth+"x"+e.innerHeight,"z="+ +new Date],i="?"+r.join("&");e.__beacon_img=new Image,e.__beacon_img.src="/analytics.php"+i}(window,document,navigator,location);}if (window.addEventListener)window.addEventListener("load",ga,false);else if (window.attachEvent)window.attachEvent("onload",ga);else window.onload=ga;

2018.9.14 后记:如果 WordPress 主题样式文件名字为 style.css,可以将 analytics.php 放至与 style.css 相同目录下,然后使用下面代码,会自动获取到 analytics.php 路径。

//Google Analytics 异步请求(服务端请求)https://stneng.com/google-analytics-异步请求(服务端请求)/
function themeurl(){ //https://zww.me/archives/25376 - js获取WordPress主题目录函数
var i=0,got=-1,url,len=document.getElementsByTagName('link').length;
while(i<=len && got==-1){
url=document.getElementsByTagName('link')[i].href;
got=url.indexOf('/style.css');
i++;
}
return url.replace(/style(.*)/,'');
};
function ga(){!function(e,n,o){var t=e.screen,a=encodeURIComponent,r=["dt="+a(n.title),"dr="+a(n.referrer),"ul="+(o.language||o.browserLanguage),"sd="+t.colorDepth+"-bit","sr="+t.width+"x"+t.height,"vp="+e.innerWidth+"x"+e.innerHeight,"z="+ +new Date],i="?"+r.join("&");e.__beacon_img=new Image,e.__beacon_img.src= themeurl() + "analytics.php"+i}(window,document,navigator,location);}if (window.addEventListener)window.addEventListener("load",ga,false);else if (window.attachEvent)window.attachEvent("onload",ga);else window.onload=ga;

然后是 PHP 代码,下面代码保存为 analytics.php,并放至网站根目录。当然,也可以放至主题目录下,但是上面 js 代码中的 /analytics.php 需要补全完整路径。比如:https://cyhour.com/wp-content/themes/xxx/js/analytics.php

<?php

$tid = 'UA-xxx-Y'; //Your Google Analytics tid , like UA-XXXX-Y

$check_referer_domain = false;
$domain = 'cyhour.com'; //If open the domain check set your domain here

if (empty($_SERVER['HTTP_REFERER']) || empty($_SERVER['HTTP_USER_AGENT'])){
echo 'error';
die();
}

if ($check_referer_domain){
$info = parse_url($_SERVER['HTTP_REFERER']);
$local = isset($info['host']) ? $info['host'] : '';
if ($local!=$domain){
echo 'error';
die();
}
}

function create_uuid(){
$str = md5(uniqid(mt_rand(), true));
$uuid = substr($str,0,8) . '-';
$uuid .= substr($str,8,4) . '-';
$uuid .= substr($str,12,4) . '-';
$uuid .= substr($str,16,4) . '-';
$uuid .= substr($str,20,12);
return $uuid;
}
if (!isset($_COOKIE["uuid"])) {
$uuid=create_uuid();
setcookie("uuid", $uuid , time()+368400000);
}else{
$uuid=$_COOKIE["uuid"];
}
if (function_exists("fastcgi_finish_request")) {
fastcgi_finish_request();
}

$url='v=1&t=pageview&';
$url.='tid='.$tid.'&';
$url.='cid='.$uuid.'&';
$url.='dl='.rawurlencode(rawurldecode($_SERVER['HTTP_REFERER'])).'&';
$url.='uip='.rawurlencode(rawurldecode($_SERVER['REMOTE_ADDR'])).'&';
$url.='ua='.rawurlencode(rawurldecode($_SERVER['HTTP_USER_AGENT'])).'&';
$url.='dt='.rawurlencode(rawurldecode($_GET['dt'])).'&';
$url.='dr='.rawurlencode(rawurldecode($_GET['dr'])).'&';
$url.='ul='.rawurlencode(rawurldecode($_GET['ul'])).'&';
$url.='sd='.rawurlencode(rawurldecode($_GET['sd'])).'&';
$url.='sr='.rawurlencode(rawurldecode($_GET['sr'])).'&';
$url.='vp='.rawurlencode(rawurldecode($_GET['vp'])).'&';
$url.='z='.$_GET['z'];
$url='https://www.google-analytics.com/collect?'.$url;
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);

如无意外,Ctrl+F5 就能看到效果。


转自:stneng - Google Analytics 异步请求(服务端请求)

除非注明,垃圾站文章均为网络收集,本文地址 https://cyhour.com/581/,转载时烦请以链接形式注明原始出处。
声明:我们不销售主机,选主机需合法使用。任何主机需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🍄:Netflix 奈飞 YouTube 合租

WordPress 博客网站数据库和文件备份插件 BackWPup 兼容 PHP8 版本

老头使用 BackWPup 这款 WordPress 博客网站数据库和文件备份插件好几年了,测试过使用备份的 sql 数据库文件和 XML 文件恢复,没有问题。 以前使用虚拟主机的时候使用 BackWPup 备份,一份直接上传 DropBox,一份 Email 发送到邮箱。后来换了 VPS,就只备份到 VPS 本地,然后使用脚本连同其它备份…

老头博客开始支持 TLS 1.3

TLS 1.3 目前只是 draft 版本,而支持 TLS 1.3 的 OpenSSL 1.1.1 的 draft-18 分支也只是开发者版本,所以,暂时最好不要用在生产环境。 其实前几天就折腾过 lnmp 1.4 升级 nginx 1.13.7,想顺手加上 TLS 1.3 支持,无奈折腾一圈以失败告终。 lnmp 1.4 更新至 nginx 1.12.2 lnm…
浏览: 95 标签:  , 

ThinkPad E450C 换电池

ThinkPad E450C 是内置电池,换起来比较费劲,基本上要把整机拆散。 百度经验有详细的拆机教程——联想(Thinkpad)E450 E450C 拆机教程,螺丝卸掉,一步一步,慢慢拆,不要用蛮力,基本上不会出啥问题。 按理是要把主板拆下来才可以拿出电池更换,不过我是偷懒换。把红色地方螺丝拆掉,主板轻轻…
浏览: 74 标签:  ,  , 

Adobe Flash Player 修改版 及可用 Flash Player 模拟扩展 Win10 可用

Adobe 在2020年12月31日后将不再支持 Adobe Flash Player,从2021年1月12日开始,阻止 Flash 内容在 Flash Player 中运行。截图 虽然不喜欢 Adobe Flash Player,但是有些网站目前仍然离不开 Adobe Flash Player,过渡解决方法是:安装中国特供版 Adobe Flash Player 或者安装网友修改 Adobe Flash…
浏览: 166 标签:  , 

Comments:17

  1. Google Analytics 去掉好久了,总是拖慢速度,这个有用么?

    2017.11.12 04:23 # 回复
    1楼
  2. 这个插件我已经删除了,现在博客上没有任何统计。
    不过,maps.Google.cn和translate.Google.cn好像可以不用番茄。

    2017.11.12 13:05 # 回复
    2楼
    • @方室网志 翻译一直不用爱国,地图很少用。加个统计也挺好的啊,一年看一次也不错嘛。

      2017.11.12 14:02 # 回复
  3. 看的一脸懵逼。。。

    2017.11.12 16:25 # 回复
    3楼
  4. 不用wp,看不懂说什么(ー_ー)!!

    2017.11.16 00:03 # 回复
    4楼
  5. 我在想怎么好多国内网站在用Google Analytics,不慢么?原来是没被墙,墙了估计大部分网站都慢的不要不要的~~

    2017.11.16 16:41 # 回复
    5楼
    • @夜枫 原本也是异步代码,对访问速度影响感觉不大,只是圈圈一直转……

      2017.11.16 17:16 # 回复

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息