Google Analytics 跨域跟踪和 _setDomainName()
Posted
技术标签:
【中文标题】Google Analytics 跨域跟踪和 _setDomainName()【英文标题】:Google Analytics Cross Domain Tracking and _setDomainName() 【发布时间】:2012-03-21 01:04:12 【问题描述】:我正在尝试在两个完全不同的域(不是子域)之间设置跨域跟踪。浏览 Google 文档的不同页面似乎给了我关于在 _setDomainName
方法中放入什么的不同建议。
我不知道什么时候应该使用这三个中的哪一个:
_gaq.push(['_setDomainName', 'mysite.com']);
_gaq.push(['_setDomainName', '.mysite.com']);
_gaq.push(['_setDomainName', 'none']);
有人可以给我一些指导或解释吗?
【问题讨论】:
【参考方案1】:Ben,最好的解释在 Google 文档页面 - http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html#domainToNone。了解此页面,有很多方法可以配置您的 GA 设置,并且在不了解更多有关您所需配置的信息的情况下,没有明确的方式可以说“这就是您需要设置跨域跟踪的方式”。该页面上的场景肯定会有所帮助。
使用 _setDomainName
的不同变体有 3 个不同的原因。
'none' - 当您想要独立于任何子域跟踪***域时,您只需要使用此功能,因为此参数将使域的 cookie 无法被其子域访问-域。
'mysite.com' - 在域和另一个域的子目录之间进行跟踪时使用此选项。例如,您的“mysite.com”个人资料还应记录来自“yourblog.othersite.com”的点击。
'.mysite.com' - 当您想要跨域及其子域进行跟踪时使用此选项。这会将***域和子域视为一个实体并在同一配置文件中进行跟踪。例如,“mysite.com”个人资料应记录“blogs.mysite.com”和“shop.mysite.com”。
我建议设置一些测试配置文件并试验您的配置,这样您就不会“弄脏”您的真实数据。
希望这会有所帮助!
【讨论】:
我已经阅读了该 Google 页面大约 100 次。您的解释确实有助于澄清一点。我看到对于我的场景,示例代码似乎告诉我我的主站点 (mysite.com) 应该将 _setDomainName 设置为“mystie.com”,但另一个站点 (my-ecommerce.com) 应该设置 _setDomainName为“无”。我不知道为什么。 你确定吗?我认为“无”表示您希望确保您的子域不被该配置文件跟踪。我认为在您的示例中,您可以在该网站和“my-ecommerce.com”上将其设置为“mysite.com”。希望您可以快速测试该理论,而不会对您的数据产生任何影响。您可以设置它并使用新的实时报告对其进行采样,以查看其跟踪是否正确。 是的。如果您查看文档的这一部分:code.google.com/apis/analytics/docs/tracking/… 您将看到在“主”站点上他们使用 url,然后在“博客”站点上他们使用“无”。我实际上是在一些测试站点上进行全新安装以对其进行全面测试,但只是先尝试尽可能多地减少未知数。感谢您的意见。 优秀。现在,在创建新网站以创建 Dev、QA 和 Live 配置文件时,我将其作为标准做法。这样我就可以轻松地将测试数据排除在生产 GA 报告之外。 RE: 'none' -- 我认为定义是不正确的,实际上是颠倒的。将 _setDomainName 设置为“none”实际上允许所有域共享 cookie 数据。见:seotakeaways.com/cross-domain-tracking-google-analytics-works【参考方案2】:文档页面有点落后,因为最近发生了一些变化,改变了最好的方法。
_setDomainName
的默认设置是'auto'
。这会将 cookie 设置为您的完整域,除非您在 www 域上,在这种情况下,它将设置为 mysite.com
而不带前导点。此设置可能会导致问题,我避免坚持使用它们。我总是改变它
为www.mysite.com
设置域名有2个选项。
_setDomainName('.mysite.com')
-> 当您还想跟踪所有子域时,这是必要的。
_setDomainName('www.mysite.com')
-> 如果你不想跟踪你的子域,你应该使用这个。
在 99% 的情况下,我会选择第一个选项。将其设置为***域,但使用前导点。 你会看到很多人反对领先的点。喜欢来自roirevolution 的这个古老但很好的帖子。围绕前导点的担忧是它可能导致 cookie 重置。但只有当有人已经拥有 cookie 时才会发生这种情况。如果这是一个新的实现,你就没有这个问题。
_setDomainName('none')
等价于 _setDomainName('auto')
+ _setAllowHash(false)
。但由于_setAllowHash(false)
已被弃用,我想_setDomainName('none')
也应该被弃用。
【讨论】:
我已将域名设置为www.mysite.com
,但 GA 仍将 cookie 域设置为 .mysite.com
,从而破坏了我的 CDN 子域。那么,我应该使用none
吗?
RE: 'none' -- 将 _setDomainName 设置为 'none' 实际上允许所有域共享 cookie 数据。见:seotakeaways.com/cross-domain-tracking-google-analytics-works【参考方案3】:
我认为mysite.com
将跟踪该站点及其一级子域(如mysite.com
和cats.mysite.com
),而.mysite.com
将跟踪该站点及其一级和二级子域(如mysite.com
和cats.mysite.com
和store.cats.mysite.com
)。
我基于谷歌和其他一些文章所说的。
none
将禁止任何子域跟踪(所以我假设它会将 cookie 的域设置为:www.mysite.com
)。
我猜测默认选项 auto
将通过 document.domain 将其设置为 www.mysite.com
(但如果不在 www
域上,则可能是 mysite.com
基于 Eduardo 在上方/下方的回答,以允许更智能的 1 级子域跟踪)。
auto
/none
是我的猜测,如果您选择 blah.mysite.com
并设置了这些 none/auto 选项,不确定它会给域带来什么。
【讨论】:
【参考方案4】:如果是跨域
tracking,_gaq.push(['_setDomainName', 'mysite.com']);
或
_gaq.push(['_setDomainName', '.mysite.com']);
没有任何区别,因为 cookie 信息不会以任何方式在这两个不同的域之间共享。
我在域 1 和域 2 之间设置了跟踪,单向跟踪。最初按照 Google Analytics 中的建议,我在两个域上都添加了_gaq.push(['_setDomainName', 'none']);
。用于新的 Google Analytics A/B 测试,A/B 测试的验证导致错误。因此,我从域 1 中删除了_gaq.push(['_setDomainName', 'none']);
,并将其保留在域 2 上,并且运行良好。
I've documented it here.
【讨论】:
这里有一些总结会很好,以防止它被删除为“不是答案”甚至是垃圾邮件。以上是关于Google Analytics 跨域跟踪和 _setDomainName()的主要内容,如果未能解决你的问题,请参考以下文章
具有多个跟踪器的 Google Analytics(分析)跨域跟踪
Shopify 的传统 Google Analytics 跨域跟踪不传递数据
我想使用 Google Analytics 跨域跟踪,它只适用于锚标签吗?