【问题标题】:Why does Google Analytics use __utm.gif?为什么 Google Analytics 使用 __utm.gif?
【发布时间】:2010-11-13 00:28:02
【问题描述】:

只是想了解他们为什么不使用 REST API。

【问题讨论】:

  • 否定。我在发布此内容之前阅读了该内容。该线程只是询问您是否需要在服务器上安装 .gif。我想知道他们为什么要使用它。
  • 同意——询问谁需要提供 gif 图像与询问是否需要提供完全不同的问题。这个问题实际上是关于是否有更好的机制将数据从客户端传输到服务器。

标签: google-analytics


【解决方案1】:

在 REST 中,客户端向服务器发起资源请求;服务器处理这些请求并返回适当的响应。

utm.gif 不涉及服务器到客户端的数据传输,而是涉及向另一个方向移动数据。

当然,REST 具有客户端与服务器通信的 HTTP 方法(GET 和 POST),事实上,Google Analytics 会引导客户端的浏览器通过 GET 请求将所有分析数据发送到 GA 服务器。更准确地说,GET 请求由请求 URL 和请求标头(例如,Referer 和用户代理标头)组成。

所有 GA 数据(每一项)都被组合并打包到 请求 URL 的查询字符串(“?”之后的所有内容)。但是为了让数据从客户端(创建它的地方)到 GA 服务器(记录和聚合它的地方),必须有一个 HTTP 请求,所以 ga.js(下载的谷歌分析脚本,除非它是由客户端缓存,作为页面加载时调用的函数的结果)指示客户端组装所有分析数据 - 例如,cookie、位置栏、请求标头等 - 将其连接成单个字符串并将其作为查询字符串附加到 URL (http://www.google-analytics.com/__utm.gif?) 并成为 请求 URL

当然不可能有没有资源的 HTTP 请求;那么资源是客户端从服务器请求的吗?它不需要来自服务器的任何东西,而是想向服务器发送信息。所以客户端请求的实际服务器资源纯粹是借口——客户端甚至不需要资源,它只是请求遵守传输协议操作员。因此,使该资源尽可能小且不引人注目是有意义的,这就是为什么它是 gif 格式的 1 x 1 透明像素的原因。它是可能的最小尺寸和最不密集的图像格式(字节/像素);我认为它是 30 多字节。其他常见格式(例如 jpeg、png、tiff)的 1 x 1 图像更大。

这种在客户端和服务器之间传输数据的通用方案一直存在;很可能有更好的方法来做到这一点,但这是我所知道的唯一方法(满足托管分析服务施加的限制)。

(Google Analytics 确实有两个 API——“Data Export" and "Management”——它们都是 RESTful Web 服务。)

【讨论】:

  • 所以他们只是为了符合协议才使用gif?他们通过QS发送所有数据并且不需要请求标头,所以我仍然不明白:( PS-感谢您的详细解释
  • 不,utm.gif 的目的是这样的:基于 js 的 Web 分析设备需要将数据从客户端传输到服务器。 “GET”请求是为该传输选择的运算符,这意味着必须将数据打包到 GET 请求标头中。 GET 请求是从客户端到 服务器 的请求,但这是它工作的唯一方式,因此客户端必须从服务器请求资源才能使其成为有效的 GET 请求,所以使用了“假”资源,这个微小的 1x1 像素透明图像。
  • @doug,为什么服务器不能简单地返回一个 1 字节的字符串而不是 35 字节的 gif?
  • 是的,非常详尽的答案,但它并没有真正回答问题的核心:为什么是图像,而不是 JSON 对象、纯文本或只是 204 No Content 响应?我很确定答案与通过各种协议 (http/https) 和浏览器支持跨域请求有关,这些协议最近才开始对此类传输应用相同的安全规则。图像没有很多适用于 AJAX (XMLHTTP) 请求的限制。
  • 为什么不是txt文件?
【解决方案2】:

您可以在不支持使用

【讨论】:

  • 如果禁用了javascript,则注入实际谷歌分析脚本的javascript sn-p甚至无法执行。
  • @Alan 不正确。您可以请求带有图像标签的 __utf.gif。这不需要 JavaScript。您无需加载 GA 脚本即可向其服务器发出请求
  • 标签本身是动态创建的,并由谷歌分析 javascript 插入。这不是标记中预先存在的东西
【解决方案3】:

因为它是一个图像,所以即使你不能执行 JS,你也可以将它贴在你可以使用的任何地方和图像标签上。许多年前,谷歌推动了这一点,用于跟踪电子邮件活动。您可以将此格式化的字符串粘贴在 html 电子邮件消息中,然后显示该消息的任何客户端都会将该请求发送到 GA 服务器,并且您将获得最低限度的 IP 信息(也可以获得您的地理位置),具体取决于您也可能的客户端获取操作系统、语言和所有其他浏览器设置。您不会从现代 JS 跟踪脚本中获得所有花哨的分析,但如果仍然有用的话。

这是一个可以帮助您格式化请求字符串的网站,并且还提供了更多详细信息。 Google pixel generator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多