这是我参与「第五届青训营 」笔记创作活动的第14天。
重绘、重排区别及如何避免
重排也叫做回流,当元素的大小或位置等几何属性发生改变时,会导致元素的布局发生改变,这就会导致重排的发生。
重绘:当元素的颜色或外观等属性发生改变时,不会影响到元素的布局,这就只会导致重绘的发生。
重排一定会引起重绘,但重绘不一定会引起重排
重排一次会很消耗性能,要尽量避免重排,避免重排的办法:
- 将需要改变位置元素设置定位或浮动,使其脱离文档流
- 当需要修改多个样式时,给元素设置class属性,通过统一修改样式而减少dom操作
- 用gpu加速
token过期的解决方案
- 跳到登录页重新获取新的token
- 当获得状态码为401时,知道token过期,重新获取新的token,再去发送原来的请求
- 每次请求都刷新token
- 双token,另一个token设置更长的过期时间,可以定义一个计时器进行优化
在浏览器输入url回车会发生什么
- 对url进行解析,通过DNS将域名解析成对应的ip地址,DNS就是一个很大的数据库。
- 根据请求头看是查看强缓存还是协商缓存,如果能找到缓存,则直接返回页面,如果没有找到,则发送请求。
- 建立TCP链接(三次握手)建立通道(第一次:SYN请求通信,第二次SYN+ACK同意,第三次ACK发送请求)。
- 建立链接后,发送HTTP报文(包括请求行,请求头部,空行,请求数据)
- 浏览器处理并做出回应(包括状态行,响应头部,空行,响应数据)
- 通过四次握手释放TCP握手
- 浏览器渲染页面内容
浏览器是如何渲染页面的
- 将HTML文档解析成dom树
- 将CSS文档构成cssom树
- 将CSSOM树和DOM树合并成渲染树
- 根据渲染树来布局,确定每个节点的位置
- 调用CPU绘制,合成图层,渲染到屏幕上 (渲染 = 生成布局+ 绘制)