新手推荐,前端性能优化小整理,效率加倍


一、 浏览器渲染原理:

  1. 输入网址  -> dns查询 -> dns缓存 -> 三次握手建立连接 -> 浏览器发送请求到服务器 -> 服务器返回html -> 浏览器渲染页面; 

  2. ​浏览器渲染过程(webkit为例):

  • ① 首先进行dom解析,css解析,构建dom树;(display:none的元素在dom树)

  • ② css解析完成css rules加到dom树上,生成render tree(回流reflow阶段,应尽量避免);(display:none的元素不在dom树)

  • ③ 经过层叠上下文处理,生成render layer(重绘repaint阶段),可以直接去paint页面,或者去④;

  • ④ 层合并后生成graphics layer,然后GPU绘制。


二、 浏览器宿主环境层面:

  1. 由于单线程解析阻塞限制,可以用script defer属性异步加载,样式放头部,脚本放底部;

  2. 结合dns-prefetch、dns-preload、preload预加载资源;

  3. 利用事件冒泡机制,采用事件委托方法绑定事件;

  4. 浏览器渲染时,开启硬件加速可以生成复合层,复合层交给GPU渲染,但不能滥用;

三、 网络层面:

  1. 减少http请求数量:css、js合并,css sprites,font-icon,base64编码图片,图片懒加载;

  2. 减轻http数据请求大小:静态资源压缩,tinypng压缩图片,webp格式,gzip压缩;

  3. 对于cookie性能bug,静态资源分开部署,cdn缓存;

  4. 缓存处理(强缓存,协商缓存),本地缓存;

  5. dns-prefetch,preload;

  6. 反向代理,cdn,负载均衡;

做为一名前端程序员,有一个学习的氛围跟一个交流圈子特别重要。这是我的一个前端学习交流群 330336289(邀请码:寂静),想学习交流前端,打算深入了解这个行业的朋友,不管你是小白还是大牛都欢迎加入,大家一起交流学习。

四、 代码层面:

  1. 利用requestAnimationFrame做持续动画;

  2. 缓存dom,优化循环体;

  3. 减少重绘,回流,样式层面进行层提升;

  4. 闭包使用,内存回收;

  5. 代码复用;

  6. 递归时采用尾调用自身即尾递归,永远不会发生栈溢出;

  7. 硬件加速时添加z-index,人为干扰复合层的排序,有效减少chrome创建不必要的复合层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值