为什么Google Analytic会请求GIF文件?
是否因为GIF允许访问比单独的JavaScript更多的数据。是获取用户的IP地址吗?
答案 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字节。
最小(不透明)JPEG 134字节。
数学很简单!更大的尺寸=更多的成本。
答案 3 :(得分:1)
您可以在没有javascript的情况下使用__utm.gif跟踪器(某些服务器帮助)
您可以在电子邮件中使用它(在发送电子邮件之前提供一些程序化帮助)
Urchin是在AJAX流行之前开发的(2005)
它与跨域无关。他们本可以使用JSONP。