最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Why does Google Analytics use a one-pixel picture to transfer data? - Stack Overflow

programmeradmin4浏览0评论

Google Analytics embeds a one pixel GIF with a URL like this:

.gif?utmwv=5.1.5&utms=5&utmn=1532897343&utmhn=www.douban&utmcs=UTF-8&utmsr=1440x900&utmsc=24-bit&utmul=en-us&utmje=1&utmfl=10.3%20r181&utmdt=%E8%B1%86%E7%93%A3&utmhid=571356425&utmr=-&utmp=%2F&utmac=UA-7019765-1&utmcc=__utma%3D30149280.1785629903.1314674330.1315290610.1315452707.10%3B%2B__utmz%3D30149280.1315452707.10.7.utmcsr%3Dbiaodianfu%7Cutmccn%3D(referral)%7Cutmcmd%3Dreferral%7Cutmcct%3D%2Fgoogle-analytics-architecture.html%3B%2B__utmv%3D30149280.162%3B&utmu=qBM~

Why not use an AJAX call? What's the benefit of using a one-pixel GIF?

Google Analytics embeds a one pixel GIF with a URL like this:

http://www.google-analytics.com/__utm.gif?utmwv=5.1.5&utms=5&utmn=1532897343&utmhn=www.douban.com&utmcs=UTF-8&utmsr=1440x900&utmsc=24-bit&utmul=en-us&utmje=1&utmfl=10.3%20r181&utmdt=%E8%B1%86%E7%93%A3&utmhid=571356425&utmr=-&utmp=%2F&utmac=UA-7019765-1&utmcc=__utma%3D30149280.1785629903.1314674330.1315290610.1315452707.10%3B%2B__utmz%3D30149280.1315452707.10.7.utmcsr%3Dbiaodianfu.com%7Cutmccn%3D(referral)%7Cutmcmd%3Dreferral%7Cutmcct%3D%2Fgoogle-analytics-architecture.html%3B%2B__utmv%3D30149280.162%3B&utmu=qBM~

Why not use an AJAX call? What's the benefit of using a one-pixel GIF?

Share Improve this question edited Sep 8, 2011 at 4:40 icktoofay 129k23 gold badges257 silver badges236 bronze badges asked Sep 8, 2011 at 4:37 Jeffrey HsuJeffrey Hsu 3052 silver badges9 bronze badges 3
  • @Joseph: I reverted your edit because Markdown interprets some characters in the URL as italic or other formatting if a block quote is used. – icktoofay Commented Sep 8, 2011 at 4:41
  • Sometimes it can use a POST if the gif request is too big. In these cases it will put all variables inside the POST body. It does so because some browsers limit the size of a request url. – Eduardo Commented Sep 8, 2011 at 7:45
  • 1 possible duplicate of Why serve 1x1 pixel GIF (web bugs) data at all? – Yahel Commented Sep 8, 2011 at 12:29
Add a comment  | 

2 Answers 2

Reset to default 21

Because you can't really do cross domain AJAX (with the exception of CORS, but that's a different story, and a recent phenomenon with less than universal support.) AJAX is for same origin requests. Also, Google Analytics forks from Urchin, which actually predates AJAX technology's adoption.

Requesting an image is pretty standard practice for analytics services "requesting" something as a means of sending something to a third party server. The reason AJAX/CORS doesn't really make sense is that you're not actually requesting an important resource for use on the page, so you want the request itself to be as quick and overhead-less as possible.

The other two ways analytics services occasionally handle sending data from the client is:

  1. Including an invisible iframe, with the query string on the iframe src passing the analytics data

  2. Requesting an image, and instead of returning an image, returning an empty response with a HTTP 204 header.

To maximize compatability. A cell phone browser may not support AJAX, for example, and thus may provide inadequate results. But hey, Google does a lot of funky stuff that nobody can explain.

发布评论

评论列表(0)

  1. 暂无评论