当前位置:首页 » 《关注互联网》 » 正文

为什么大厂前端监控都在用GIF做埋点?,不了解这些多线程的基础知识很难学懂前端

27 人参与  2024年04月06日 13:25  分类 : 《关注互联网》  评论

点击全文阅读


发现过程

首先说一下我是怎么发现的,前一段时间,产品提了个需求,说我们现在的书籍曝光上报规范并不是他们想要的数据,并且以后所有页面的书籍上报都统一成最新规范。

曝光规范:

书籍出现在可视区并停留1秒,算作有效曝光

书籍不能重复曝光,假如它一直在可视区滚动时只能上报一次

当它移出可视区后再回到可视区,再按第一点进行曝光

OK,既然要所有页面统一,那就只能封装成通用库来使用了,这里实现逻辑就不贴了,想看的私聊我发你,主要的难点就是停留时长计算,以及曝光标记。

const exposeReportClass = new exposeReport({

scrollDom: “”,  // 滚动容器,建议指定一个滚动容器,不传默认为window

watchDom: “.bookitem”, // 监听的dom,建议使用class类,标签也支持

time: 1000             // 停留有效时长ms

});

// 提供两个上报方法

exposeReportClass.didReport(()=>{

// 手动上报

//callback

})

exposeReportClass.scrollReport(()=>{

// 滚动上报

//callback

})

//

具体业务逻辑之需要放在对应的callback里面,而上报逻辑开发者无需考虑,因为我底层已经统一处理好了。

然后我再测试的时候就发现,上报发的请求居然是通过图片发起的,并不是我们认为的接口上报。

5bc8ec17e8f2628ef659503b1d799d2a.png

然后我去查了下资料,发现很多大厂的上报都是这么干的!

使用GIF上报的原因

向服务器端上报数据,可以通过请求接口,请求普通文件,或者请求图片资源的方式进行。**只要能上报数据,无论是请求GIF文件还是请求其他普通文件(JS)或者是请求接口,服务器端其实并不关心具体的上报方式。**那为什么所有系统都统一使用了请求GIF图片的方式上报数据呢?

「防止跨域」

一般而言,打点域名都不是当前域名,所以所有的接口请求都会构成跨域。而跨域请求很容易出现由于配置不当被浏览器拦截并报错,这是不能接受的。但图片的src属性并不会跨域,并且同样可以发起请求。(排除接口上报)

「防止阻塞页面加载,影响用户体验」

通常,创建资源节点后只有将对象注入到浏览器DOM树后,浏览器才会实际发送资源请求。反复操作DOM不仅会引发性能问题,而且载入js/css资源还会阻塞页面渲染,影响用户体验。

但是图片请求例外。构造图片打点不仅不用插入DOM,只要在js中new出Image对象就能发起请求,而且还没有阻塞问题,在没有js的浏览器环境中也能通过img标签正常打点,这是其他类型的资源请求所做不到的。(排除文件方式)

「相比PNG/JPG,GIF的体积最小」

最小的BMP文件需要74个字节,PNG需要67个字节,而合法的GIF,只需要43个字节。

同样的响应,GIF可以比BMP节约41%的流量,比PNG节约35%的流量。

「并且大多采用的是1*1像素的透明GIF来上报」

1x1像素是最小的合法图片。而且,因为是通过图片打点,所以图片最好是透明的,这样一来不会影响页面本身展示效果,二者表示图片透明只要使用一个二进制位标记图片是透明色即可,不用存储色彩空间数据,可以节约体积。

更多推荐

大厂的前端白屏监控解决方案

深入理解前端性能监控

最后

欢迎大家围观我的朋友圈,搞搞技术,吹吹牛逼。关注我,秒添加,回复加群,可以进入 500人前端群。

108bbccb13634671dbda7267dbe91889.png

转发文章并关注公众号:前端开发博客,回复 1024,领取前端进阶资料

回复「电子书」领取27本精选电子书

回复「加群」加入前端大神交流群,一起学习进步

回复「面试」获取 面试 精选文章

44eed110338f93ec684b913a57436da0.png

我是漫步,感谢各位的:「点赞、关注和在看」,我们下期见!

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

框架相关

原生JS虽能实现绝大部分功能,但要么就是过于繁琐,要么就是存在缺陷,故绝大多数开发者都会首选框架开发方案。现阶段较热门是React、Vue两大框架,两者工作原理上存在共通点,也存在一些不同点,对于校招来说,不需要两个框架都学得特别熟,一般面试官会针对你简历中写的框架进行提问。

在框架方面,生命周期、钩子函数、虚拟DOM这些基本知识是必须要掌握的,在学习的过程可以结合框架的官方文档

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

Vue框架

知识要点:
1. vue-cli工程
2. vue核心知识点
3. vue-router
4. vuex
5. http请求
6. UI样式
7. 常用功能
8. MVVM设计模式

React框架

知识要点:
1. 基本知识
2. React 组件
3. React Redux
4. React 路由

6. UI样式*

7. 常用功能
8. MVVM设计模式

[外链图片转存中…(img-UkcINwE6-1711815422892)]

React框架

知识要点:
1. 基本知识
2. React 组件
3. React Redux
4. React 路由

[外链图片转存中…(img-3u9UhhRW-1711815422892)]


点击全文阅读


本文链接:http://zhangshiyu.com/post/91139.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1