本指南介绍了 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
上成功写入。由于 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 参数。