loading...

如何为移动互联网部署Google analytics

作者:sluke 发布时间:June 21, 2010 分类:学习札记

Google Analytics使用js获取访问数据,实际上它还提供了部署在服务器端的方法,用于统计不支持js的用户访问,比如手机这样的移动设备。目前Google提供了PHP、JSP、ASP.NET及Perl的实现方式,其他语言的可以参考这些完成。

下面以PHP5为例:
1、下载Google提供的程序包
http://www.google.com/analytics/googleanalyticsformobile.zip

2、解压会发现有php的目录,ga.php是需要上传到服务器的文件,sample.php是官方提供的实例。
使用编辑器打开php1.snippet,有如下代码:

<?php
  //  Copyright 2009 Google Inc. All Rights Reserved.
  $GA_ACCOUNT = "ACCOUNT ID GOES HERE";
  $GA_PIXEL = "ga.php";
 
  function googleAnalyticsGetImageUrl() {
    global $GA_ACCOUNT, $GA_PIXEL;
    $url = "";
    $url .= $GA_PIXEL . "?";
    $url .= "utmac=" . $GA_ACCOUNT;
    $url .= "&utmn=" . rand(0, 0x7fffffff);
 
    $referer = $_SERVER["HTTP_REFERER"];
    $query = $_SERVER["QUERY_STRING"];
    $path = $_SERVER["REQUEST_URI"];
 
    if (empty($referer)) {
      $referer = "-";
    }
    $url .= "&utmr=" . urlencode($referer);
 
    if (!empty($path)) {
      $url .= "&utmp=" . urlencode($path);
    }
 
    $url .= "&guid=ON";
 
    return $url;
  }
?>

修改 $GA_ACCOUNT = "ACCOUNT ID GOES HERE"; 这一行,写入你的google analytics ID(在通常情况下是UA-XXXXXXX-X,这里要替换成MO-XXXXXXX-X,表示为移动互联网),本段代码复制需要统计的页面里(php2.snippet里的代码页需要复制到),后面会给出完整演示。

3、将ga.php上传至网站根目录。官方给出的实例如下,需要注意的是php1.snippet及php2.snippet的位置

<?php
  $GA_ACCOUNT = "MO-3845491-5";
  $GA_PIXEL = "ga.php";
 
  function googleAnalyticsGetImageUrl() {
    global $GA_ACCOUNT, $GA_PIXEL;
    $url = "";
    $url .= $GA_PIXEL . "?";
    $url .= "utmac=" . $GA_ACCOUNT;
    $url .= "&utmn=" . rand(0, 0x7fffffff);
 
    $referer = $_SERVER["HTTP_REFERER"];
    $query = $_SERVER["QUERY_STRING"];
    $path = $_SERVER["REQUEST_URI"];
 
    if (empty($referer)) {
      $referer = "-";
    }
    $url .= "&utmr=" . urlencode($referer);
 
    if (!empty($path)) {
      $url .= "&utmp=" . urlencode($path);
    }
 
    $url .= "&guid=ON";
 
    return $url;
  }
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Sample Mobile Analytics Page</title>
</head>
<body>
 
Publishers content here.
<?php
  $googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
?>
<img src="<?= $googleAnalyticsImageUrl ?>" />
Testing: <?= $googleAnalyticsImageUrl ?>
</body>
</html>

需要注意的是
1、不要复制多段代码,不要同时使用js方式
2、Google analytics是通过IP判断用户地理位置,如果是手机用户,尤其是使用了服务器端渲染技术的浏览器,如opera、ucweb等,这一项统计意义不大
3、服务器资源消耗会增大
4、纯静态页面没法统计

PS:Google analytics专门为iPhone和Android提供了SDK,可以在下面的地址下载
http://code.google.com/intl/zh-CN/mobile/analytics/download.html

Google analytics自定义报告里的指标与维度

作者:sluke 发布时间:April 1, 2010 分类:闲言碎语

Google analytics的自定义报告里有两个组,一个叫“指标”(Metrics),另一个叫“维度”(Dimensions)

Google analytics自定义报告里的指标与纬度

在这项功能刚发布的时候,什么是“Metrics”,什么是“Dimensions”让我困惑了一会儿,GA的英文帮助里解释得比较清楚:

"A metric is a numeric summary of user behavior to your website"
指数是用户行为的统计数字
"A dimension is a data key or field typically in the form of a string"
维度是数据域,通常是一个字串

简言之,指数是与用户相关的数字,维度是分类。

关于指标里各项定义、维度里各项定义及有效维度-指标组合请查看Google analytics的帮助
https://www.google.com/support/googleanalytics/bin/topic.py?topic=15084

Google Analytics发布异步跟踪

作者:sluke 发布时间:December 2, 2009 分类:闲言碎语

Google Analytics 为网站统计提供了一个新的跟踪代码方式。这种方式可以理解为使用一个独立的通道处理网页统计,以减少网页载入的时间。大量使用js和富媒体内容的用站效果尤其明显,当然轻量级的站点也有改善。

新的代码提供了以下等新特性:
1、代码载入速度更快
2、增强数据采集和准确度
3、解决当js没有完全载入时产生的依赖性问题

异步跟踪代码正处于beta的状态,如果想改善网页载入时间和数据采集准确性,确实值得一试。

使用这个新功能需要更改加载在页面中的代码和不同的API调用语法。如果页面已经使用了Google Analytics统计,为了减少错误,官方的建议是先移除所有的代码及自定义内容,然后将下面这段在head中载入,它不会影响到其他JS的加载:

<script type="text/javascript">
 
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);
 
  (function() {
    var ga = document.createElement('script');
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    ga.setAttribute('async', 'true');
    document.documentElement.firstChild.appendChild(ga);
  })();
 
</script>

也可以分开放,在head放,如:

<head>
  <script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-XXXXX-X']);
    _gaq.push(['_trackPageview']);
  </script>
</head>

然后在/body前放:

<script type="text/javascript">
    (function() {
      var ga = document.createElement('script');
      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      ga.setAttribute('async', 'true');
      document.documentElement.firstChild.appendChild(ga);
    })();
  </script>

异步代码语法的部署,传统型代码这么写:

var pageTracker = _gat._getTracker('UA-XXXXX-X');
pageTracker._trackPageview();

异步就要这么写:
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);

如果部署多个ID:

_gaq.push(['_setAccount', 'UA-XXXXX-1']);
_gaq.push(['_trackPageview']);
 
_gaq.push(['t2._setAccount', 'UA-XXXXX-2']);
_gaq.push(['t2._trackPageview']);
 
_gaq.push(['t3._setAccount', 'UA-XXXXX-3']);
_gaq.push(['t3._trackPageview']);

这里的t2、t3是可以随便定义的。

HTML事件处理:

<button onclick="_gaq.push(['_trackEvent', 'button3', 'clicked'])"/><button>

定义函数:

_gaq.push(['myTracker._setAccount', 'UA-XXXXX-X']);
 
_gaq.push(function() {
  var pageTracker = _gaq._getAsyncTracker('myTracker');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

关于_gaq这个对象,更详细的介绍请看google的文档:
http://code.google.com/apis/analytics/docs/gaJS/gaJSApi_gaq.html

异步代码详细部署请看:
http://code.google.com/apis/analytics/docs/tracking/asyncMigrationExamples.html

欢迎twitter进行交流,@sluke520

给typecho写个插件就是这么简单

作者:sluke 发布时间:October 25, 2009 分类:闲言碎语

给typecho写一个插件并不是一件高深的事情,首先,需要了解typecho php使用的编码规范,请参考
http://typecho.org/phpcoding
论坛的bin同学也给出一个了简明的说明:
http://forum.typecho.org/viewtopic.php?f=6&t=160

以后就是给typecho写一个方便部署统计代码的插件,使用说明:
1、把下面的代码保存成AnalyticsHelper.php(注意大小写)
2、上传到/usr/plugins/
3、后台启用AnalyticsHelper插件
4、配置插件,输入统计的js代码
5、在模版的合适位置加入<?php AnalyticsHelper::output(); ?>

<?php
/**
 * AnalyticsHelper
 * 
 * @package AnalyticsHelper 
 * @author sluke
 * @version 0.9 beta
 * @link http://typecho.org
 */
class AnalyticsHelper implements Typecho_Plugin_Interface
{
    /**
     * 激活插件方法,如果激活失败,直接抛出异常
     * 
     * @access public
     * @return void
     * @throws Typecho_Plugin_Exception
     */
    public static function activate(){}
 
    /**
     * 禁用插件方法,如果禁用失败,直接抛出异常
     * 
     * @static
     * @access public
     * @return void
     * @throws Typecho_Plugin_Exception
     */
    public static function deactivate(){}
 
    /**
     * 获取插件配置面板
     * 
     * @access public
     * @param Typecho_Widget_Helper_Form $form 配置面板
     * @return void
     */
    public static function config(Typecho_Widget_Helper_Form $form)
    {
        /** 配置各种统计代码 */
        $name = new Typecho_Widget_Helper_Form_Element_Text('code', NULL, 'Analytics code', _t('写入统计代码'));
        $form->addInput($name);
    }
 
    /**
     * 个人用户的配置面板
     * 
     * @access public
     * @param Typecho_Widget_Helper_Form $form
     * @return void
     */
    public static function personalConfig(Typecho_Widget_Helper_Form $form){}
 
    /**
     * 插件实现方法
     * 
     * @access public
     * @return void
     */
    public static function output()
    {
        echo '<div style="display:none">' . Typecho_Widget::widget('Widget_Options')->plugin('AnalyticsHelper')->code . '</div>'; 
    }
}

如果觉得php高亮挺好看,可以去70同学那里下载代码高亮插件
http://www.joyqi.com/typecho/move-to-mediatemple.html

无需javascript的Google Analytics

作者:sluke 发布时间:September 28, 2009 分类:资源资料

Google Analytics是通过js代码部署的,原理是加载一个1*1的图片和其他参数,假设用户关闭js支持,统计也就无从谈起。Google reader上的一个好友分享了一篇日志,介绍了一个无需js的Google Analytics服务。

这个免费的服务是架设在google app engine上的,主要用于无js统计,其实范围很广:
1、手机浏览器用户
2、bbs用户,想知道有多少用户阅读自己的帖子
3、邮件统计
4、网店用户,比如淘宝卖家等等

它的格式是这样的:
(HTML code):

<img src="http://nojsstats.appspot.com/UA-000000/mywebsite.com" />

(BBCode):
[img]http://nojsstats.appspot.com/UA-000000/mywebsite.com[/img]
(CSS code):
body{
background: url("http://nojsstats.appspot.com/UA-000000/mywebsite.com");
}

如果使用SSL,是这样的
https://nojsstats.appspot.com/UA-000000/yourwebsite.com

由于google app engine的免费版本有流量和CPU限制,如果需要统计很大的流量,需要联系sirdarckcat@elhacker.net
支付10USD,单独开通帐号,其实这点钱是交给google买高级帐号的,呵呵

原理我就不解释了,这个服务可以用于一些神奇的地方,比如有针对性的估算网站流量、验证广告效果、戳穿作弊等等等等,好邪恶.

有兴趣的可以阅读原帖。
http://nojsstats.blogspot.com/2009/09/free-google-analytics-without.html