You don't have javascript enabled. Good luck! :(

欢迎页

Welcome to Ganace's Blog


欢迎您来到Ganace 的个人博客。

在茫茫互联网的海洋里能够遇见,实在是一份不小的幸运。

诚挚地向您问候一声:您好,朋友!

这里是属于Ganace个人的隐秘小空间,记录了工作学习中遇到的知识点与灵感,以及生活中的碎碎念与吐槽突如其来的中二病尬尬的文艺时间锻炼腹肌的时刻惊喜的小发现等等。

想要在自己的平淡无奇的人生长河中留下些什么,

或者只是为了拯救老人家岌岌可危的记忆力,

仅此而已。

来到此地,分享与你。

也期待与您的再次相遇!

Share with Me


有任何的分享或者建议与吐槽,都可以Email我:ganace@foxmail.com

欢迎您的来信!

【Front】前端性能优化

  Apr 19, 2024     Ganace     Front-end-Foundation

Front

总结一下前端性能优化方案。


网络相关优化

  • 使用 http2.0
  • 减少、合并 HTTP 请求,通过合并 CSS、JS 文件、精灵图等方式减少请求数量。
  • 压缩文件, 开启 nginx,Gzip 对静态资源压缩
  • 使用 HTTP 缓存,如强缓存、协商缓存
  • 使用 CDN,将网站资源分布到各地服务器上,减少访问延迟

HTML&CSS

  • 减少 DOM 数量,减轻浏览器渲染计算负担。
  • 使用异步和延迟加载 js 文件,避免 js 文件阻塞页面渲染
  • 压缩 HTML、CSS 代码体积,删除不要的代码,合并 CSS 文件,减少 HTTP 请求次数和请求大小。
  • 减少 CSS 选择器的复杂程度,复杂度越高浏览器解析时间越长。
  • 避免使用 CSS 表达式在 javascript 代码中
  • 使用 css 渲染合成层如 transform、opacity、will-change 等,提高页面相应速度减少卡顿现象。
  • 动画使用 CSS3 过渡,减少动画复杂度,还可以使用硬件加速。

JS

  • 减少 DOM 操作数量
  • 避免使用 with 语句、eval 函数,避免引擎难以优化。
  • 尽量使用原生方法,执行效率高。
  • 将 js 文件放到文件页面底部,避免阻塞页面渲染
  • 使用事件委托,减少事件绑定次数。
  • 合理使用缓存,避免重复请求数据。
  • 处理滚动、输入等事件时,适当添加防抖与节流

Vue

  • 合理使用 watch 和 computed,数据变化就会执行,避免使用太多,减少不必要的开销
  • 合理使用组件,提高代码可维护性的同事也会降低代码组件的耦合性
  • 使用路由懒加载,在需要的时候才会进行加载,避免一次性加载太多路由,导致页面阻塞
  • 使用 Vuex 缓存数据
  • 合理使用 mixins,抽离公共代码封装成模块,避免重复代码。
  • 合理使用 v-if 、v-show
  • v-for 不要和 v-if 一起使用,v-for 的优先级会比 v-if 高
  • v-for 中不要用 index 做 key,要保证 key 的唯一性
  • 使用异步组件,避免一次性加载太多组件
  • 避免使用 v-html,存在安全问风险和性能问题,可以使用 v-text
  • 使用 keep-alive 缓存组件,避免组件重复加载

Webpack 优化

  • 代码切割,使用 code splitting 将代码进行分割,避免将所有代码打包到一个文件,减少响应体积。
  • 按需加载代码,在使用使用的时候加载代码。
  • 压缩代码体积,可以减小代码体积
  • 优化静态资源,使用字体图标、雪碧图、webp 格式的图片、svg 图标等
  • 使用 Tree Shaking 删除未被引用的代码
  • 开启 gzip 压缩
  • 静态资源使用 CDN 加载,减少服务器压力