慎用trackPageview函数重写页面URL

5月18日我在微博中记录到:” 慎用_gaq.push([‘_trackPageview’]);重写页面URL”。有朋友问为什么要慎用。今天来总结和说明下这个问题。

trust

强大的trackPageview函数

trackPageview函数是一个非常强大并且有用的功能,我曾经写过一篇文章《Google Analytics中trackPageview函数的5种使用策略》来介绍trackPageview函数的使用方法。通过对trackPageview函数和JavaScript事件的配合使用,我们几乎可以追踪到访客在页面中的任何行为。下面是常用的JavaScript事件列表。可以看到无论是鼠标点击,移动,悬停,图像加载,还是页面关闭,通过对trackPageview函数设定适当的JavaScript事件都可以被我们追踪到。

JavaScript事件

前面的这些都属于自定义的trackPageview函数使用方法。除此之外,trackPageview函数最常用的地方在默认的Google Analyticsx 追踪代码中。在这些需要添加到每个页面的追踪代码中,都包含一条对trackPageview函数的调用。当访问者打开网站页面时,trackPageview函数用来记录当前页面的相对URL地址。并记录在汇报给GA服务器的&utmp参数中。

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

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

这里的trackPageview函数使用方法是本篇文章要说明的重点内容。请谨慎使用Google Analytics默认追踪代码中的trackPageview函数对页面URL进行重写。否则,可能会对你的报告和数据造成意想不到的麻烦,并且不可恢复。

TrackPageview函数追踪的是什么?

TrackPageview函数为什么会如此重要,不能修改。它到底追踪到了哪些信息。在默认的google Analytics追踪代码中,trackPageview函数的作用是记录访问者当前页面的URL地址,并记录在utmp参数中返回到GA服务器,最终显示在报告中。而Google Analytics通过每个页面URL被返回的次数计算一个重要的基础指标:综合浏览量(Pageviews),也就是我们通常说的PV。

而我们之所以一再强调不要使用TrackPageview函数随意修改或重写页面URL的关键,也是要保证网站中最基础指标PV的真实性。PV是网站最基础的一个指标,想一想有多少复合指标和PV有关就知道他有多重要了。当然,这只是其中的一部分,重写URL除了可能会对PV造成影响,还可能影响很多其他Google Analytics的报告和功能。后面将详细介绍。

TrackPageview函数与报告的关系

前面说过,trackPageview函数用来记录页面的URL,并最终显示在Google Analytics的报告中。trackPageview函数记录到的信息几乎覆盖了整个内容报告,无论是热门内容,登录页面还是退出页面报告。而他所记录的基础指标PV则用来生成大部分的复合指标,例如:浏览深度,停留时间,退出率等等。

在通常情况下,我们为每个网站只设置一个Google Analytics追踪代码。这时,如果你使用TrackPageview函数对页面URL进行了重新,那么影响将是全局性的。GATC中的TrackPageview函数与Google Analytics帐户是一对一的关系。你对TrackPageview函数所做的任何修改会影响该帐户下所有的配置文件(Profile)。还记得我们之前曾强烈要求每个网站都要保留一个未经任何修改的主配置文件吗?如果你直接修改GATC中的内容,那么主配置文件中的数据也将同样受到影响。这会带来多大的问题和麻烦?试过一次你就终身难忘了。

Google Analytics中易受影响的报告

当你使用TrackPageview函数重写了页面URL后,在Google Analytics的报告中,通常有三个报告会首先受到影响。他们分别是热门内容报告,导航路径报告和页面点击图报告。

1热门内容报告

热门内容报告中记录了网站中最受欢迎的页面URL,所有对页面URL的修改也都会直接体现在这个报告中。如果你用TrackPageview函数来记录访问者在到达此页面之前的站内访问路径,那么这里最直接的问题就是会产生无数个没有规律的重复页面,以及被分割的页面指标。

所有页面的基础数据都将变的未知和不再准确。

2导航路径报告

与热门内容报告一样,重写页面URL还会对导航路径报告造成影响。导航路径报告告诉我们访问者访问的前一页与后一页,如何你对页面URL进行了重写,造成重复页面或同一个页面的指标被分割到不同的URL中,那么导航报告就不能准确的现实前一页及后一页的点击比率。从而造成导航路径报告完全不准确及不可用。严重时可能根本无法将报告中的URL与页面URL想对应。报告完全不可用。

3页面点击热区图

使用TrackPageview函数重写页面URL对页面点击热区图造成的影响最大。因为当网站原始URL被重写后。GoogleAnalytics热区图因为无法将两个URL进行对应,将完全不再显示这个URL的任何数据,包括点击量,点击占比及转换和收入。这时,你会看到页面中存在大面积无点击的URL。而这些就是重写URL造成的。

两种可行的替代方案

前面说了一堆使用TrackPageview函数重写URL可能造成的负面影响。那么我们就不能再使用这个功能了吗?如果我非要用到这个功能怎么办呢?最后推荐两种靠谱的替代方案。这两种方案基本可以避免对报告,指标和功能的负面影响,并且达到灵活使用TrackPageview函数的功能。

方法一:在一个帐户下重复使用TrackPageview函数

第一种方法是在一个帐户下,通过重复使用TrackPageview函数来记录不同的内容。这个方法的最佳实践来自”像风一样自由”的博客。大家可以用httpwatch去围观。在GATC代码中,增加一行TrackPageview函数用于重写页面URL。这样,当访问者打开页面时Google Analytics会同时收到两条数据,一条是原始页面URL,另一条则是重写后的页面URL。然后再通过过滤器将重写后的URL单独过滤到一个配置文件中。

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-*******-*']);
_gaq.push(['_trackPageview']);
_gaq.push(['_trackPageview', '/V/bluewhale.cc']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

方法二:在不同Google Analytics帐户下单独追踪

第二种方法是分别设置两个不同的Google Analytics账号,在账号1中记录原始页面URL,而在账号2中记录重写后的页面URL。当访问者打开页面时GATC会分别向两个不同的帐户各返回一条数据。这种方法不需要在配置文件中设置过滤器。

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-*******-1']);
_gaq.push(['_trackPageview']);
_gaq.push(['_setAccount', 'UA-*******-2']);
_gaq.push(['_trackPageview', '/V/bluewhale.cc']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

两种方法都实现了通过TrackPageview函数重写页面URL或自定义追踪的功能,并且不会对网站的基础指标和报告中的功能造成影响。具体该使用哪种方法,以及如何设置这些功能取决于你的实际情况和需求。

最后再啰嗦一句:无论什么时候,我们也不应该去修改或影响网站的基础指标。

——【所有文章及图片版权归 蓝鲸(王彦平)所有。欢迎转载,但请注明转自“蓝鲸网站分析博客”。】——

Comments

  1. adiemusy says:

    支持下,不但指出了问题存在的原因,还给出了解决问题的方法。

  2. Toby says:

    感觉跟看侦探小说一样,从数据的采集上能倒推出这么多细节^^
    第一个替代方案不是很明白
    可以理解为,对配置文件的过滤器,本质上是在过滤既定条件下的,那些对1X1图片的请求么?也因此,不同的调用彼此并不影响?
    换句话说,我在点击购买按钮上加了 trackpageview去测量用户点按钮的数量,贴上/virtual的标签,之后做了个过滤所有含/virtual页面的配置文件,那在此配置文件下,页面上那一坨一坨的对trackpageview的调用其实并不影响热点图,导航这些功能的?
    问的有点凌乱 在数据采集上纠结了2个月了 还望指点^^

  3. Vincent_CDA says:

    Dear bluewhale:
    请教个问题: 您这篇文章的主要目的是叫别人慎重修改
    var _gaq = _gaq || [];
    _gaq.push([‘_setAccount’, ‘UA-*******-*’]);
    _gaq.push([‘_trackPageview’]);
    这段代码中的_trackPageview;
    前面文章Google Analytics中trackPageview函数的5种使用策略提到的那些点还是可以修改_trackPageview吧?

Speak Your Mind

*