【问题标题】:Google Analytics - track multiple events in single HTTP requestGoogle Analytics - 在单个 HTTP 请求中跟踪多个事件
【发布时间】:2014-06-15 03:06:06
【问题描述】:

我需要跟踪该项目在搜索结果中出现的次数(在网络应用程序中)。 IE。用户搜索某些内容并获得前 20 个项目 - 跟踪第 20 个项目中的每一个的 1 次访问。 在另一个页面上,用户可以看到项目的统计信息 - 它在搜索结果中显示的次数。

我考虑将Google Analytics Event Tracking 用于该任务。例如。来自Javascript:

ga('send', 'event', {
    eventCategory: 'item-category',
    eventAction: 'search',
    eventLabel: 'item-id',
});

但不幸的是,Google Analytics API 只允许每 1 个 HTTP 请求注册 1 个事件。这意味着每次搜索都会发送 20 多个 HTTP 请求。这对我们的要求来说是非常无效的。

我正在寻找解决方法:

  1. Measurement protocol 允许发送直接 HTTP 请求,但 http://www.google-analytics.com/collect 的 GET 和 POST 版本都只为每个请求注册一个事件。
  2. Batch Processing in Google Data 可能会有所帮助,但 GData looks obsolete 我不确定它是否支持 Google Analytics 事件数据。对于实验来说,它看起来相当重量级。
  3. Management APIReporting API 不支持上传事件数据。
  4. 不能使用 ga.js(Google Analytics 跟踪的旧版本):Post Multiple Events within One HttpRequest to Google Analytics

是否可以为每个 1 个 HTTP 请求注册多个 Google Analytics 事件?

【问题讨论】:

  • But unfortunately Google Analytics API allows to register only 1 event per 1 HTTP request. Analytics 文档中的哪个位置?
  • 我刚刚对其进行了测试 - 每个“发送”调用都会向 Google Analytics 服务器产生新的 HTTP 请求。

标签: web google-analytics google-analytics-api


【解决方案1】:

以前版本的 GA (ga.js) 可以做到这一点:Can I track multiple Google Analytics events at once?

而且,通用版本是可能的: Setting Parameters Across Multiple Send Commands

在某些情况下,您可能希望设置一个参数并让该值在多个发送命令中保持不变。例如,如果您有一个网页要跟踪一个网页浏览量和两个事件。

在上面的示例中,Google 演示了如何设置特定页面参数,但它也显示了发送多个事件。

【讨论】:

  • 我不是在谈论为一页注册多个事件 - 这绝对是可能的。这就是性能问题 - 每个“发送”调用或每个推送事件(在以前的 GA 版本中)都会产生到 GA 服务器的新往返。如果您在启用了某些网络分析器(例如使用浏览器开发工具)的情况下测试链接中的代码,您会看到这种行为。
【解决方案2】:

单个 HTTP 请求无法跟踪多个 GA 事件。

最后,我通过Measurement Protocol实现服务器端事件注册。每个事件仍有 1 个对 GA 服务器的 HTTP 请求,但不会影响最终用户。

【讨论】:

  • 你能详细说明你做了什么吗?我需要为我的网络应用使用 Measurement Protocol,但不想为每个事件发送请求。
  • 我们网站的访问者进行搜索。我们跟踪事件“项目已显示在搜索结果中”以收集每个项目在搜索结果中列出的频率的统计信息。每次访问者运行搜索,应注册 10 或 20 个事件。为了避免跟踪事件客户端,我们在服务器上注册它。我们从 Javascript 向我们的后端发送每次搜索的单个 HTTP 请求。然后,在我们处理该请求的服务器上,将所有要注册的事件放入队列中并返回。单独的线程通过 Measurement Protocol 监视队列并跟踪新事件。
  • 我明白了...与方法 2 of my answer 非常相似,只是不使用一个请求是一个事件的批处理请求,而是在生成请求时将请求发送到代理,然后每个请求都是解析为单个搜索项事件。
  • @VitaliyShibaev 您为客户端 ID (cid) 参数传递了什么?您是否能够从 ga 在客户端获取它或自己生成它?谢谢
  • 我通过 tracker.get('clientId') 在 JS 端获取客户端 ID,然后将其传递给我的服务器 API。保持用户交互历史的一致性很重要(关联从 JS 代码和后端代码注册的事件/浏览量与同一用户)。
【解决方案3】:

我一直在尝试做同样的事情,但我只看到了 2 个解决方案:

  1. 对Android SDK的Dispatch API进行逆向工程
  2. 写一个接受batch requestsintermediate log proxy,然后将各个请求直接转发到GA的Measurement Protocol

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多