前端性能优化

214 阅读2分钟

可以使用浏览器的lighthouse来诊断,根据诊断建议报告来做性能优化
先定位问题,找到要优化的点,哪些需要重点去优化

  1. JS中的事件委托(也称为:事件代理),用于:减少DOM操作
  2. 防抖和节流,用于高频事件性能优化
  3. 减少请求数:使用浏览器缓存、减少重定向请求、减少dns的查询次数
  4. 减少资源大小:压缩图片、开启网络压缩(vue的默认压缩和gzip压缩,需要服务器设置)、压缩js和css丑化代码
  5. 找最快的服务器:进行cdn加速
  6. 图片预加载,css样式表放在顶部且link链式引入,js放在底部dody结束标签前
  7. API接口数据设置缓存,css sprites或svg sprites,js/css源码压缩,图片大小控制合适,使用iconfont或者svg:它们比图片更小更清晰,网页Gzip压缩
  8. 减少dom操作次数
  9. 减少dom元素数量,合理使用:after :before等伪类
  10. 避免重定向,图片懒加载,前后端分离开发,资源按需加载,最好能做到首屏直出(即:服务端渲染)
  11. 避免使用css expression(css表达式)
  12. 多域名分发划分到不同域名,解决浏览器域名请求并发数问题,同时也解决了请求默认携带的cookie问题
  13. 尽量减少iframe使用,它会阻塞主页面的渲染
  14. 对所有资源压缩:js、css、字体、图片等,甚至html

CSS的优化

  1. 避免嵌套太多的选择器
  2. 减少css嵌套,最好不要嵌套3层以上
  3. 建立公共样式,把相同样式提取出来作为公共类使用,不如常用的清除浮动等
  4. 拆分出公共css文件,把大部分页面的公共结构的样式提取出来放到单独的css文件里
  5. css sprite / svg sprite
  6. 减少重排,避免不必要的重绘
  7. 简化css,借助webpack、gulp等进行代码压缩丑化
  8. 尽量不要使用过多的内联样式
  9. 异步加载css文件
  10. 首推的是合并css文件,如果页面加载10个css文件,每个文件1k,那么也要比只加载一个100k的文件慢
  11. 不要使用@import引入css文件,用link
  12. less、sass抽取公共部分写成函数