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;

然后是 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/
Tags:  , 

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楼
    • @姜辰 不至于啊,浅显易懂。

      2017.11.12 17:10 # 回复
      • @老杨 不是,是我不知道Google Analytics 究竟有啥具体的作用

        2017.11.12 23:24 # 回复
        • @姜辰 就一网站统计工具——企业级的网站分析服务。最简单的功能就是访问量统计。

          2017.11.12 23:52 # 回复
  4. 不用wp,看不懂说什么(ー_ー)!!

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

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

      2017.11.16 17:16 # 回复

发表留言