网域和Cookie – 网络跟踪(analytics.js)

本指南将介绍analytics.js使用Cookie的方式,以及如何配置多网域网站。

  1. 概览
  2. 实现
    1. 配置默认Cookie设置
    2. 自动Cookie网域配置
    3. 在localhost上设置Cookie
    4. 同一网域上的多个跟踪器
    5. 修改Cookie有效期
    6. 获取客户端ID
    7. 停用Cookie

概览

默认情况下,analytics.js库使用名为_ga的单一Cookie来存储随机生成的唯一客户端标识符(客户端ID)。ID生成后会存储在Cookie中,并随每个匹配/请求一起发送至Google Analytics(分析)。Google Analytics(分析)服务器随后将使用此ID来计算用户、会话和广告系列等数据。

_ga Cookie是一种仅允许运行JavaScript的网域访问的第一方Cookie。在某些实现方案中,您可能需要修改Google Analytics(分析)设置Cookie的方法 – 下文将对此进行说明。

实现

analytics.js的默认JavaScript代码段使用create方法创建跟踪器:

ga('create', 'UA-XXXX-Y');

这会创建有如下特征的新Cookie:

  • Cookie名称为_ga
  • Cookie网域为不含www.前缀的网站网域。
  • Cookie设为在24个月(2年)后过期,且有效期在每次系统发送匹配时刷新。

配置默认Cookie设置

要修改上述任何值,您应向create方法传递一个配置对象作为其最后一个参数。配置对象为普通的老式JavaScript对象,其中的每个属性都是您要覆盖的字段的名称。例如:

ga('create', 'UA-XXXX-Y', {
  'cookieName': 'new_cookie_name',
  'cookieDomain': 'mynew.domain.com',
  'cookieExpires': 60 * 60 * 24 * 28  // Time in seconds.
});

这会将默认Cookie设置改为相应的值。

自动Cookie网域配置

ga('create', 'UA-XXXX-Y', 'auto');

在使用auto参数时,自动Cookie网域配置会自动将Cookie写入尽可能最高级的网域,从而简化跨网域跟踪的实现。如果是在www.example.co.uk网域上使用,它将尝试按以下顺序写入Cookie:

  1. co.uk
  2. example.co.uk
  3. www.example.co.uk

Analytics.js将无法在co.uk上写入Cookie,但能在example.co.uk上成功xieru。由于Cookie已成功在更高级网域上写入,因此系统将跳过www.example.co.uk

在localhost上设置Cookie

在一些情况下,您可能要在运行于localhost上的网络服务器中运行analytics.js。要设置analytics.js Cookie,您需要使用以下代码停用默认的Cookie网域:

ga('create', 'UA-XXXX-Y', {
  'cookieDomain': 'none'
});

或者直接使用:

ga('create', 'UA-XXXX-Y', 'none');

同一网域上的多个跟踪器

analytics.js库会设置一个具有唯一客户端ID的Cookie,因此网页上的所有跟踪器都应共用这一个Cookie。如果要在多个子域上或同个网域的不同子目录上实现analytics.js,您应:

  • 指定所有跟踪器在尽可能最高的网域上设置Cookie。
  • 省略网域的“www”和“.”(点号)前缀。

因此如果您的网站有2个子域:one.example.comtwo.example.com,您应按如下所示配置两个跟踪器:

// Configuration for one.example.com
ga('create', 'UA-XXXX-Y', {'cookieDomain': 'example.com'});
// Configuration for two.example.com
ga('create', 'UA-XXXX-Y', {'cookieDomain': 'example.com'});

修改Cookie有效期

每次当匹配/请求发送至Google Analytics(分析)服务器时,Cookie过期时间都会更新为在当前时间基础上加上cookieExpires时间值(以秒为单位)所得的未来时间。例如:

ga('create', 'UA-XXXX-Y', {
  'cookieExpires': 60
});

此设置会将Cookie过期时间设在60秒(1分钟)以后。

如果您将cookieExpires时间设为0(零)秒,Cookie将变成基于会话的Cookie,并在当前浏览器会话结束后马上过期:

ga('create', 'UA-XXXX-Y', {
  'cookieExpires': 0
});

获取客户端ID

开发者不能直接访问analytics.js设置的Cookie,因为Cookie格式可能在毫无征兆的情况下变更。这可能会导致脚本错误和错误的数据。因此,如果需要,开发者应使用get命令来获取clientId值。具体命令如下:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

analytics.js库加载后,传递给ga的函数将执行,而tracker参数将包含对默认跟踪对象的参考。随后,系统将使用跟踪器对象获取clientId

停用Cookie

analytics.js默认使用单一Cookie在各网页上使用固定不变的唯一客户端标识符。在一些情况下,您可能想要使用自己的存储机制并直接将数据发送给Google Analytics(分析)而不使用Cookie。

您可以使用以下代码来禁止analytics.js设置Cookie:

ga('create', 'UA-XXXX-Y', {
  'storage': 'none',
  'clientId': '35009a79-1a05-49d7-b876-2b884d0f825b'
});

如果您停用Cookie存储,除了使用跨网域链接参数的特殊情况外,您都必须提供自己的clientId参数。

 

发表回复