前端经常用到的性能优化手段

🚀 一、网络层面(最立竿见影)

✔ 1. 减小 bundle 大小

常见优化手段:

  • 代码分割(code splitting):路由级、组件级懒加载。

  • Tree Shaking:确保使用 ES Module,引入 antd 时用按需加载。

  • 去掉不必要 polyfill :babel/preset-env 的 useBuiltIns: 'usage'

  • 图片资源压缩:使用 webp、压缩工具(tinypng、svgo)。

  • 第三方库替换:moment → dayjs;lodash → lodash-es 或按需加载。

👉 最大收益点:减少下载体积 = 首屏速度提升非常明显。


🚀 二、渲染层面(React / Vue)

✔ 2. 减少不必要的重新渲染

React 常见方式

  • React.memo

  • useMemouseCallback(避免子组件因引用变化重渲染)

  • 避免在 render 中创建函数、对象、数组

  • 避免重复 setState(合并更新)

  • 避免在 context 中存放大对象,拆 context

Vue 常见方式

  • v-oncecomputedwatch 合理使用

  • 避免深层响应式对象反复变动

  • key 不要乱用 index 导致 diff 多做工作


🚀 三、DOM 与布局层面(浏览器渲染机制)

✔ 3. 避免频繁触发回流(Reflow)

属于性能杀手:

以下操作会触发回流/重绘:

  • 获取 offsetTop / offsetHeight / scrollTop(会强制布局)

  • 操作 DOM 频繁变动样式

  • 改变元素几何属性(宽、高、margin、padding)

优化方案:

  • 批量修改 DOM(使用 classList.add/remove 一次修改)

  • 使用 requestAnimationFrame 代替高频事件更新

  • 使用虚拟列表(大数据渲染必备)


🚀 四、图片与资源优化

✔ 4. 图片优化是前端性能的大头

  • 使用 webp、avif

  • 小图标合并雪碧图 或用 SVG

  • 图片懒加载(loading="lazy"

  • 服务端给图片做压缩(实际收益远大于前端)


🚀 五、缓存与存储

✔ 5. 缓存资源(浏览器缓存 + 本地存储)

  • HTTP 缓存(Cache-Control, ETag)

  • Service Worker 静态资源缓存(PWA)

  • localStorage/sessionStorage 预存一些不常变的数据

效果:减少重复请求,提高加载速度


🚀 六、骨架屏与懒加载(提升感知速度)

✔ 6. 骨架屏 + 分块加载

即便首屏还没加载完,也让用户感觉快:

  • 骨架屏占位

  • 组件懒加载

  • 滚动加载(infinite scroll)

  • 图片懒加载

用户感知体验提升 > 实际性能


🚀 七、大量数据与长列表优化

✔ 7. 虚拟列表(Virtualized List)

React:

  • react-window

  • react-virtualized

Vue:

  • vue-virtual-scroller

上万条数据一下子从 秒级 → 毫秒级


🚀 八、低端设备优化(动画、事件)

✔ 8. 动画优化

  • 尽量使用 transform + opacity(不会触发布局)

  • 避免频繁的 JS 动画(改用 CSS 动画)

  • requestAnimationFrame 做平滑更新

👉 transform、opacity 是浏览器能 GPU 加速的属性。


🚀 九、弱网环境(你最近问过)

✔ 9. 弱网下的优化关键

  • 请求失败自动重试(retry + backoff)

  • 分片下载、边下载边渲染

  • 合并请求减少 RTT

  • 提前预加载关键资源(prefetch/preload)

  • 超时控制(避免卡死)


🚀 十、构建工具层(Vite / Webpack)

✔ 10. 构建优化

Vite

  • 使用 esbuild 进行压缩(更快)

  • lazy loading

  • 按需构建目标浏览器

Webpack

  • 分包(SplitChunks)

  • 压缩 CSS / JS

  • preload/prefetch 插件

  • HardSourceCache


🚀 ⭐ 实际项目中收益最大的 TOP5 排行榜

按实际效果从高到低:

  1. 代码分割 + Tree Shaking(减少首屏 JS)

  2. 图片压缩 + webp

  3. React.memo / useMemo / useCallback 降低渲染次数

  4. 虚拟列表(大数据场景)

  5. HTTP/Browser 缓存

这些五项做了,一个项目能提升至少 30%--70% 的速度

相关推荐
消失的旧时光-19434 小时前
Kotlinx.serialization 对多态对象(sealed class )支持更好用
java·服务器·前端
少卿5 小时前
React Compiler 完全指南:自动化性能优化的未来
前端·javascript
广州华水科技5 小时前
水库变形监测推荐:2025年单北斗GNSS变形监测系统TOP5,助力基础设施安全
前端
广州华水科技5 小时前
北斗GNSS变形监测一体机在基础设施安全中的应用与优势
前端
七淮5 小时前
umi4暗黑模式设置
前端
8***B5 小时前
前端路由权限控制,动态路由生成
前端
军军3605 小时前
从图片到点阵:用JavaScript重现复古数码点阵艺术图
前端·javascript
znhy@1235 小时前
Vue基础知识(一)
前端·javascript·vue.js
terminal0075 小时前
浅谈useRef的使用和渲染机制
前端·react.js·面试
我的小月月5 小时前
🔥 手把手教你实现前端邮件预览功能
前端·vue.js