在 javascript 客户端和 java 服务器之间共享 Google Analytics ClientID
Posted
技术标签:
【中文标题】在 javascript 客户端和 java 服务器之间共享 Google Analytics ClientID【英文标题】:Sharing Google Analytics ClientID between javascript client and java server 【发布时间】:2015-03-23 05:07:23 【问题描述】:我一直在使用 Google Analytics 对我的网络应用进行基本分析 - 只是使用这样的 javascript 调用来跟踪页面展示次数:
ga('create', 'UA-XXXXXXXXX-1', 'mydomain.com');ga('send', 'pageview')
这种方法一直让我很沮丧,因为我无法可靠地捕获一些服务器端事件。我刚刚发现我可以使用 Measurement Protocol 在服务器端记录事件。在我的服务器上记录事件看起来很容易,除了 cid (clientid) 参数...
我的理解是,在浏览器上,我目前使用的 javascript 会随机创建 cid,然后存储在 _ga cookie 中。我也明白,我应该在客户端(“页面视图”)和服务器(其他事件)调用同一客户端之间共享该 clientid/cid 值,以便将它们关联在一起。
This *** link 对我很有帮助。
问题是:我应该
-
在服务器上创建一个clientid,然后分享给客户端;或
我是否应该让客户端上的 javascript 创建 clientid,然后尝试与我的服务器共享它? (我怀疑这是更好的答案)
对于(1),我认为我可以做的是:
将 UUID 存储在服务器上的会话中(即 google 应用引擎) 当我使用 Measurement Protocol 直接在服务器端创建事件时,直接使用该 UUID当我使用 jsp 在页面上创建 ga 对象时使用相同的 UUID:
ga('create', 'UA-XXXXXXXXX-1', 'mydomain.com',
'clientId': '<%=[value from the session]%>');
这种方法让我担心的是,ID 只会在服务器上的会话中持续存在。我认为 clientId (cid) 的意图是它会在很长一段时间内为客户持续存在......所以我想我会忘记谁是新用户和老用户?
对于 (2),坦率地说,我不知道该怎么做……我从上面的 *** 链接中知道,我可以从 ga 对象中的 clientId 参数中获取 cid。我不知道如何将其发送回我的服务器(这可能是一个简单的 javascript 问题)。
非常感谢有关使用哪种方法的建议...谢谢!
【问题讨论】:
【参考方案1】:我还建议您使用选项 2:让 Google 处理 cid
参数的设置。
由于该参数已在您的域的 _ga cookie 中设置,因此它会随每个 HTTP 请求传递到您的应用服务器。
您需要做的就是在服务器端:
-
从 _ga cookie 中提取 CID
将其链接到当前用户(您的应用可能使用自己的会话 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
【讨论】:
以上是关于在 javascript 客户端和 java 服务器之间共享 Google Analytics ClientID的主要内容,如果未能解决你的问题,请参考以下文章
使用 Java 和 JavaScript 处理消息:JSON 还是 XML?