本指南将介绍analytics.js使用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:
co.uk
example.co.uk
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.com
和two.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
参数。