为什么Google Analytic会请求GIF文件?

时间:2010-01-17 23:12:03

标签: google-analytics

为什么Google Analytic会请求GIF文件?

是否因为GIF允许访问比单独的JavaScript更多的数据。是获取用户的IP地址吗?

4 个答案:

答案 0 :(得分:16)

Google的javascript必须将您的网页浏览的详细信息传输给他们的服务器。 Ajax不能跨域使用,因此提交信息的唯一方法是从Google服务器请求文件,并在查询字符串中传递必要的信息。为此,必须使用标准HTML标记请求某种形式的内容。在不影响页面本身的情况下执行此操作的最简单方法是加载1x1透明gif。请注意,对于Google脚本(以及其他),此图像实际上并未添加到页面中。它只是通过javascript语句加载

var img1 = new Image();
img1.src = 'http://path/to/file.gif?otherinfohere';

这会加载图像而不将其添加到页面中。也可以使用脚本标记加载信息,如下所示:

<script src="http://path/to/script.js?otherinfohere" type="text/javascript"><script>

但是,用户更有可能阻止javascript而不是图像,因此更安全的路线是请求图像。至于为什么他们会使用gif而不是说jpg,如果流氓浏览器实际上将图像添加到页面,gif会更安全。透明gif不太可能对布局产生负面影响,因为1x1 jpg会在页面的某处留下1像素点。

编辑:要添加我对有阻止javascript的用户的评论,可以在noscript标记内添加包含静态信息的gif请求,以便即使在禁用javascript的情况下也允许进行基本跟踪。据我所知,GA没有这样做,但其他一些网络分析提供商也这样做。

答案 1 :(得分:15)

即使启用了JavaScript,分析也会请求GIF文件。如果你看一下图像的GET参数,它包含了很多关于浏览器的信息。像utmsr=1280x1024这样的东西(屏幕尺寸)。 Google代码有一个list of parameters

它使用图片请求在没有XMLHttpRequest的情况下发送有关浏览器的信息。

现在,要真正回答原始问题,Google可能会这样做以绕过cross-domain XMLHttpRequest限制。

答案 2 :(得分:13)

http://www.perlmonks.org/?node_id=7974

最小的透明GIF 43字节

http://garethrees.org/2007/11/14/pngcrush/

最小的透明PNG-24(旧版浏览器无法显示) 67字节

http://www.techsupportteam.org/forum/digital-imaging-photography/1892-worlds-smallest-valid-jpeg.html

最小(不透明)JPEG 134字节

数学很简单!更大的尺寸=更多的成本。

答案 3 :(得分:1)

  1. 您可以在没有javascript的情况下使用__utm.gif跟踪器(某些服务器帮助)

  2. 您可以在电子邮件中使用它(在发送电子邮件之前提供一些程序化帮助)

  3. Urchin是在AJAX流行之前开发的(2005)

  4. 它与跨域无关。他们本可以使用JSONP。