gpt4 book ai didi

java - 在 javascript 客户端和 java 服务器之间共享 Google Analytics ClientID

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:15 24 4
gpt4 key购买 nike

我一直在使用 Google Analytics 为我的网络应用程序进行基本分析 - 只是使用 javascript 调用跟踪页面印象,如下所示:

ga('create', 'UA-XXXXXXXXX-1', 'mydomain.com');ga('send', 'pageview')

这种方法一直让我感到沮丧,因为我无法可靠地捕获某些服务器端事件。我刚刚发现我可以使用 Measurement Protocol 在服务器端记录事件。在我的服务器上记录事件看起来很容易,除了 cid (clientid) 参数...

我的理解是,在浏览器上,我目前使用的 javascript 会随机创建 cid,然后将其存储在 _ga cookie 中。我还明白,我应该在客户端(“页面 View ”)和服务器(其他事件)对同一客户端的调用之间共享 clientid/cid 值,以便它们相互关联。

This StackOverflow link对我来说是一个很有帮助的引用。

问题是:我应该

  1. 在服务器上创建一个clientid,然后共享给客户端;或
  2. 我应该让客户端上的 javascript 创建 clientid,然后尝试与我的服务器共享它吗? (我怀疑这是更好的答案)

对于(1),我认为我可以做的是:

  • 在服务器(谷歌应用引擎)的 session 中存储一个 UUID
  • 当我使用 Measurement Protocol 直接在服务器端创建事件时,直接使用该 UUID
  • 当我使用 jsp 在页面上创建 ga 对象时使用相同的 UUID:

    ga('create', 'UA-XXXXXXXXX-1', 'mydomain.com', 
    {'clientId': '<%=[value from the session]%>'});

对于这种方法,让我担心的是 ID 只会在服务器上的 session 中持续存在。我认为 clientId (cid) 的目的是它会在很长一段时间内为客户端保留...所以我想我会忘记谁是新用户还是回头客?

对于 (2),坦率地说我不知道​​该怎么做...我从上面的 StackOverflow 链接知道我可以从 ga 对象中的 clientId 参数中获取 cid。我不知道如何将它发送回我的服务器(这可能是一个简单的 javascript 问题)。

非常感谢有关使用哪种方法的建议....谢谢!

最佳答案

我还建议您选择选项 2:让 Google 处理 cid 参数的设置。

由于该参数已在您域的 _ga cookie 中设置,因此它会随每个 HTTP 请求传递到您的应用服务器。

您需要做的就是在服务器端:

  1. 从 _ga cookie 中提取 CID
  2. 将其链接到当前用户(您的应用可能使用自己的 session cookie 来识别用户)

例如,this answer provides the Rails code :

def save_google_analytics_client_id
if current_user && cookies["_ga"]
client_id = cookies["_ga"].split(".").last(2).join(".")
if current_user.google_analytics_client_id != client_id
current_user.google_analytics_client_id = client_id
current_user.save
end
end
end

关于java - 在 javascript 客户端和 java 服务器之间共享 Google Analytics ClientID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29203622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com