前端性能优化归纳总结

91 阅读2分钟

前端优化方案

  • 运行时优化

    • 减少重绘重排

      • js修改样式时,最好不要直接修改样式,而是通过class进行样式修改
      • 对dom元素显示隐藏,使用v-show而不是v-if
    • 使用事件委托

      • 事件委托利用事件冒泡机制,只指定一个事件处理程序就可以处理某一类的所有事件。
    • 不要覆盖原生方法

    • 尽可能降低CSS选择器的复杂性

    • 使用弹性布局flexbox

    • Transform 和 opacity属性更改来实现动画,这两个属性不会触发重绘和重排。

  • 加载时的优化

    • 减少Http请求

      • 一个完整的http请求需要经过dns解析 tcp连接 浏览器发出请求 服务器接受请求并响应返回 浏览器渲染返回文件 整个流程比较繁琐,如果过多请求会直接体现在页面性能上
      • 所以需要将多个小文件合并成一个大文件,减少http请求数
    • 使用服务器渲染

      • 客户端渲染是获取HTML文件,根据需要下载JS文件,运行文件 生成DOM再渲染。无形中会拖慢性能
      • 服务器渲染会返回HTML文件,客户端对其进行解析即可
    • 静态资源使用CDN

      • 在各个地方部署服务器,让用户离服务器越近,从而缩短请求时间
    • CSS放在头部,JS放在底部

      • 所有放在标签里面的css和js文件都会堵塞渲染,如果是js文件比较大,解析起来会比较慢这时候页面就可能会空白。因此需要将JS放在底部,html加载解析完之后再解析js文件。

      • 那为什么CSS不放在底部,而是头部呢?这是因为,如果先加载完html再加载css,会让用户第一时间看到页面是无样式的。为了避免这种情况,所以css要放在头部。

      • 其实JS也可以放在头部

        • 在标签加上defer即可 ,defer属性是非同步请求外部脚本,会等待浏览器解析完才执行。
    • 字体图标代替图片图标

      • 字体图标小
      • 矢量图,不会失真
      • 可以使用font-size、color等属性
    • 利用缓存,不重复加载相同的资源

      • 浏览器缓存策略 设置expires设置过期时间、cache-control 设置缓存策略
    • 图片优化

      • 图片延迟加载
      • 降低图片质量
      • css3代替图片
      • 使用雪碧图
    • 按需加载代码

      • webpack按需加载代码
      • 提取第三方库代码,减少ES6转成ES5的冗余代码