为什么发送数据埋点请求的时候使用的是 1x1 像素的透明 gif 图片?
前沿
为什么请求数据埋点的时候用透明的GIF 图片呢?
我也是查阅了相关资料,知道这样的好处:
从下面几个点出发:
1. 没有跨域问题,一般这种上报数据,代码要写通用的,img 天然支持跨域;(排除 ajax)
2.不会阻塞页面加载,影响用户的体验,只要 new Image 对象就好了, 通过它的onerror和onload事件来检测发送状态;(排 除 JS/CSS 文件资源方式上报)
3.在所有图片中,简单、安全、相比PNG/JPG体积最小;(比较 PNG/JPG)(tip:最小的BMP文件需要74个字节,PNG需要67个字节,而合法的GIF,只需要43个字节)
举个例子:
let _img = new Image(); _img.src = "https://example.com/aaa?a=1&b=2"