前端性能优化

前端性能优化(考虑方向)

一、资源优化

1、Echarts按需加载
2、UI库按需加载
3、图片压缩(https://tinypng.com/)
4、较大的json和图片存放到服务器的静态资源文件夹
5、Url-loader的limit值不要过大(默认4kb)

二、渲染优化

引起回流:

1、页面首次渲染
2、浏览器窗口大小发生改变
3、元素尺寸或位置发生改变
4、元素内容变化(文字数量或图片大小等等)
5、元素字体大小变化
6、添加或者删除可见的DOM元素
7、激活CSS伪类(例如::hover)
8、查询某些属性或调用某些方法
9、引起回流的属性和方法:

clientWidth、clientHeight、clientTop、clientLeft
offsetWidth、offsetHeight、offsetTop、offsetLeft
scrollWidth、scrollHeight、scrollTop、scrollLeft
scrollIntoView()、scrollIntoViewIffNeeded()
getComputedStyle()
getBoundingClientRect()
scrollTo()

CSS:

1、避免使用table布局;
2、尽可能在DOM树的最末端改变class,减少回流影响的节点;
3、避免设置多层内联样式;
4、将动画效果应用到position属性为absolute或fixed的元素上;
5、避免使用CSS表达式(例如:calc())。
6、使用 transform 和 opacity 属性更改来实现动画

JS:

1、避免频繁操作样式,最好一次性重写style属性,或者将样式列表定义为class并一次性更改class属性。
2、避免频繁操作DOM,创建一个documentFragment,在它上面应用所有DOM操作,最后再把它添加到文档中。
3、也可以先为元素设置display: none,操作结束后再把它显示出来。因为在display属性为none的元素上进行的DOM操作不会引发回流和重绘。
4、避免频繁读取会引发回流/重绘的属性,如果确实需要多次使用,就用一个变量缓存起来。
5、对具有复杂动画的元素使用绝对定位,使它脱离文档流,否则会引起父元素及后续元素频繁回流。

三、其它优化

1、Webpack分块懒加载,根据webpackChunkName划分对应的业务模块,使用prefetch可以实现预加载
2、使用window.addEventListener(‘resize’, this.reload); 要做防抖处理
3、列表点击时考虑使用事件委托,添加target的判断,减少dom的事件绑定
4、Axios封装,自动取消重复接口

四、常用插件及方式

1、图片压缩:使用图片压缩工具可以减小图片的大小,从而提高页面加载速度。常用的图片压缩工具有 TinyPNG、Kraken.io 等。

2、CDN 加速:使用 CDN 可以将静态资源分发到全球各地的服务器上,从而提高资源加载速度。常用的 CDN 服务有阿里云 CDN、腾讯云 CDN 等。

3、压缩代码:使用压缩工具可以将代码压缩成更小的体积,从而减少页面加载时间。常用的压缩工具有 UglifyJS、Closure Compiler 等。

4、懒加载:使用懒加载可以延迟加载页面中的图片和其他资源,从而减少页面加载时间。常用的懒加载插件有 LazyLoad、Unveil.js 等。

5、预加载:使用预加载可以在页面加载完成之前提前加载一些资源,从而提高页面加载速度。常用的预加载插件有 PreloadJS、LoadCSS 等。

6、减少 HTTP 请求:减少页面中的 HTTP 请求可以减少页面加载时间。可以通过合并 CSS 和 JavaScript 文件、使用 CSS Sprites 等方式来减少 HTTP 请求。

7、使用缓存:使用缓存可以减少页面加载时间,常用的缓存方式有浏览器缓存、CDN 缓存等。

五、总结方式

  1. 减少HTTP请求:合并CSS和JS文件、使用CSS Sprites、使用字体图标等。

  2. 压缩文件:压缩CSS、JS、HTML等文件,减小文件大小,加快加载速度。

  3. 使用CDN:使用CDN可以加速静态资源的加载,减轻服务器压力。

  4. 延迟加载:将页面中不必要的内容延迟加载,减少首屏加载时间。

  5. 缓存:使用浏览器缓存和服务器缓存,减少重复请求,提高页面加载速度。

  6. 优化图片:使用适当的图片格式、压缩图片、使用lazyload等方式优化图片加载。

  7. 代码优化:减少DOM操作、避免使用eval、减少重绘和重排等。

  8. 使用异步加载:使用异步加载JS文件、使用defer和async等方式优化JS加载。

  9. 优化字体:使用系统字体、使用web字体、减少字体文件大小等。

  10. 使用HTTP/2:HTTP/2可以减少请求次数、提高并发性能,加快页面加载速度。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值