为了让 Google Analytics(分析)能够判断两项不同的命中是否属于同一用户,必须通过客户端 ID 字段将与该用户关联的唯一标识符与每项命中一同发送。此唯一标识符是一个随机生成的字符串。
对于非 AMP 网页,Google Analytics(分析)在发布商网域中使用一个名为 _ga
的第一方 Cookie 存储该客户端 ID。
AMP 网页的情况略有不同。用户可能以多种方式通过浏览器查看网页,这就导致客户端 ID 的生成和管理不尽相同。 因此,网站/应用指标会受到影响。
客户端 ID 的各种使用情形
下面介绍了用户访问 AMP 网页时可能采用的各种方式及其对客户端 ID 的影响:
Google 搜索:AMP 网页是通过 Google 搜索结果加以访问的,并显示在“AMP 查看工具”中。
- 在这种情况下,用户执行 Google 搜索,所选的搜索结果是 AMP 网页。
google.com
页面包含一个指向cdn.ampproject.org
的IFRAME
,内容是从cdn.ampproject.org
加载的。 - 由于在这种情况下
google.com
是第一方,因此客户端 ID 存储在google.com
中。然后,将客户端 ID 从 AMP 查看工具传递到通过cdn.ampproject.org
提供的网页,以便通过 AMP 分析进行传输。 - 仅在原始 AMP 网页的来源(即架构、主机和端口的组合)相同时,才会重复使用 Cookie。
- 在这种情况下,用户执行 Google 搜索,所选的搜索结果是 AMP 网页。
代理/缓存:通过代理/缓存访问 AMP 网页。
- 在这种情况下,用户会直接转到
cdn.ampproject.org
。 - 客户端 ID 存储在
cdn.ampproject.org
中。当用户(在一段时间内)再次访问时,会重复使用该客户端 ID。在这种情况下,cdn.ampproject.org
是第一方。 - 仅在原始 AMP 网页的来源(即架构、主机和端口的组合)相同时,才会重复使用 Cookie。
- 在这种情况下,用户会直接转到
直接 AMP:直接在发布商网域中访问 AMP 网页。
- 在这种情况下,用户直接进入发布商的网域查看 AMP 网页。
- 客户端 ID 存储在 Cookie (
_ga
) 中,无论该 ID 是传统格式还是 AMP 格式,都会加以使用/重复使用。 - 如果客户端 ID 由 AMP 网页生成,则客户端 ID 将采用 AMP 格式(即
amp-
加上随机生成的字符串)。
非 AMP:在发布商网域中访问非 AMP 网页。
- 在这种情况下,用户直接在发布商网域中查看非 AMP 网页。
- 客户端 ID 存储在 Cookie (
_ga
) 中,无论该 ID 是传统格式还是 AMP 格式,都会加以使用/重复使用。 - 如果客户端 ID 由非 AMP 网页生成,则客户端 ID 将遵循传统的客户端 ID 格式。
客户端 ID 的注意事项
上述各种情形各有不同的注意事项。
多个客户端 ID
任何情况下,即使用户是在从同一个客户端/浏览器访问内容的,该用户使用的客户端 ID 仍然取决于该用户访问的网域。因此,对于在上述不同情形中访问发布商内容的同一用户,Google Analytics(分析)会将其计为三个不同的用户(分别对应搜索、代理/缓存和发布商来源这三种情形)。
各种情形间的相互作用
当用户在多种情形中访问同一发布商的内容时,系统是如何处理各种情形间的相互作用的呢?下面的列表就提供了相关的注意事项:
Google 搜索与直接、Google 搜索与非 AMP、代理/缓存与直接以及代理/缓存与非 AMP
- 由于其中一种情况下是使用在另一种情况下无法访问的本地存储,所以 ID 是分开保留的。
直接与非 AMP
- 对于同一用户,使用的是同一个 Cookie。客户端 ID 的格式取决于用户首次访问的是 AMP 网页还是非 AMP 网页。
跨 AMP 和非 AMP 网页使用一个客户端 ID
可以通过 AMP 客户端 ID 集成,允许用户跨 AMP 和非 AMP 网页使用同一个客户端 ID。做到这一点后,Google Analytics(分析)将开始在上述的 Google 搜索、直接 AMP 和非 AMP 情形中使用同一个客户端 ID。以下几个示例说明了如何为用户确定客户端 ID:
- 当新用户在 Google 搜索上访问 AMP 网页时,他们首先使用的是 AMP 客户端 ID。当此用户随后访问非 AMP 网页时,系统将从发布商网域中的 Cookie 检索该客户端 ID,并将其用于非 AMP 网页。
- 当访问过 AMP 以及非 AMP 网页的回访用户访问 AMP 或非 AMP 网页时,系统之后将为该用户使用 AMP 客户端 ID。
- 当从未访问 AMP 网页的回访用户访问非 AMP 网页时,系统将继续使用 analytics.js 生成的客户端 ID。