-
Notifications
You must be signed in to change notification settings - Fork 3.3k
第 49 题:为什么通常在发送数据埋点请求的时候使用的是 1x1 像素的透明 gif 图片? #87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
补充楼上~以下为参考了网上资料后的一些个人整理:
参考资料: |
|
英文术语叫:image beacon 主要应用于只需要向服务器发送数据(日志数据)的场合,且无需服务器有消息体回应。比如收集访问者的统计信息。 一般做法是服务器用一个1x1的gif图片来作为响应,当然这有点浪费服务器资源。因此用header来响应比较合适,目前比较合适的做法是服务器发送"204 No Content",即“服务器成功处理了请求,但不需要返回任何实体内容”。 另外该脚本的位置一般放在页面最后以免阻塞页面渲染,并且一般情况下也不需要append到DOM中。通过它的onerror和onload事件来检测发送状态。
这样做和ajax请求的区别在于: |
好问题,连题干都没抓住😂 |
我…….jpg (,,Ծ‸Ծ,,) |
楼上的大佬们,你们的答案和 <script async src="埋点"></script> 有什么区别?这样埋点还能各式各样了。 |
图片资源相对于 script 这种文件请求方式而言,不需要额外注入DOM,性能更好。只需要在js中 |
同时 不 造成阻塞。 |
nginx默认内置ngx_http_empty_gif_module模块, 而且nginx里面的空白图片是保存在内存中的,速度绝对比硬盘上读取的快。 |
写过第三方嵌入脚本,比如说统计代码之类的就比较清楚。beacon不止new一个image,作用是图片请求,无跨域问题,无阻塞。使用的时候注意图片会有缓存。 |
这和jsonp差不多吧 |
可以用new image发起一个请求,后台服务器直接返回204响应码,这样子连图片都省了。。。 |
补充点:使用image时,部分浏览器内页面关闭不会影响数据上报 |
想问一下,后端是怎么处理这样的链接请求过来的。后端提供的接口就是叫xxx.gif?还是这就是一张图片的请求,那后端怎么拦截? |
拦截? |
题目都没看明白。流下了菜比的眼泪 |
最低合法体积是什么意思 |
为什么 1px gif 字节大小有的是 43 bytes, 有的是 42 bytes?
https://mercury.jd.com/log.gif
|
我理解是因为技术惯性. 其实ajax也没问题, 反正就算跨域请求也能发出去(只是浏览器收不到返回值而已) |
|
最近埋点遇到了一个问题,不知道大家有没有遇到过:
这个时候,如果是「chrome 浏览器」并且「打开控制台」,就会出现: |
这题脑壳有问题? |
作用:工作中,用于前端监控,比如曝光等等,谷歌和百度的都是用的1x1 像素的透明 gif 图片;
why?
The text was updated successfully, but these errors were encountered: