Web 项目的常规优化手段适用于各种框架(包括 Vue),核心围绕 加载速度、运行性能、用户体验 三个维度,主要包括以下几类:
一、资源加载优化
1. 静态资源压缩与合并
- 压缩:JS、CSS 用 terser css-minimizer 等工具压缩;图片用 WebP/AVIF 格式(体积比 JPG/PNG 小 30%-50%),并通过 sharp 等工具压缩分辨率。
- 合并:减少 HTTP 请求(如合并小图片为雪碧图,或用 SVG 代替多个小图标)。
2. 合理使用缓存
- 强缓存:通过 HTTP 响应头 Cache-Control: max-age=31536000 (1 年)缓存静态资源(如图片、JS/CSS 哈希文件)。
- 协商缓存:对频繁更新的资源用 ETag 或 Last-Modified ,让浏览器验证资源是否更新,避免重复下载。
- 本地存储:用 localStorage 缓存不常变的接口数据(如字典表),减少接口请求。
3. 懒加载(Lazy Loading)
- 图片懒加载:用 loading="lazy" 属性(原生支持)或 IntersectionObserver API,只加载可视区域内的图片。
- 路由懒加载:通过 import() 动态加载路由组件(Vue 中结合 defineAsyncComponent ),减小初始包体积。
- 组件懒加载:非首屏组件(如弹窗、抽屉)延迟加载,减少初始渲染压力。
4. CDN 加速
- 静态资源(JS、CSS、图片)部署到 CDN,利用 CDN 节点的就近访问和缓存能力,降低服务器压力,提升加载速度。
二、代码层面优化
1. 减少不必要的代码
- Tree-Shaking:通过 ES6 模块( import/export )配合 Webpack/Vite 的 Tree-Shaking,剔除未使用的代码(死代码)。
- 按需引入:UI 库(如 Element、Ant Design)只引入用到的组件,而非全量导入(如 import { Button } from 'element-plus' )。
2. 优化 JavaScript 执行效率
- 避免长任务阻塞主线程:将复杂计算、大数据处理放到 Web Worker 中(不阻塞 UI 渲染)。
- 减少重绘(Repaint)和回流(Reflow):
- 批量操作 DOM(如用 documentFragment 或先隐藏元素再修改)。
- 避免频繁读取 offsetHeight 等触发回流的属性(可缓存结果)。
- 防抖(Debounce)与节流(Throttle):对高频事件(如 resize scroll input )进行限制,减少函数执行次数(如搜索输入框输入后延迟 300ms 再请求接口)。
3. CSS 优化
- 避免复杂选择器(如多层嵌套):浏览器匹配 CSS 选择器是从右向左,复杂选择器会增加匹配时间。
- 减少 @import : @import 会阻塞 CSS 解析,改用 <link> 并行加载。
- 关键 CSS 内联:将首屏渲染必需的 CSS 嵌入 HTML <style> 中,避免等待外部 CSS 加载导致的白屏。
三、网络请求优化
1. 接口优化
- 合并请求:将多个独立接口合并为一个(如首屏需要的用户信息、菜单数据),减少 HTTP 请求次数。
- 分页/懒加载数据:列表数据通过分页或滚动加载,避免一次性请求大量数据。
- 接口缓存:服务端对高频且变化少的接口(如商品分类)设置缓存(如 Redis),减少数据库查询。
2. 使用 HTTP/2 或 HTTP/3
- 多路复用:HTTP/2 允许同一连接并发传输多个请求,解决 HTTP/1.1 的“队头阻塞”问题。
- 头部压缩:减少请求头体积,提升传输效率。
3. 预加载与预连接
- 预加载( preload ):提前加载关键资源(如字体、首屏 JS), <link rel="preload" href="critical.js" as="script"> 。
- 预连接( preconnect ):提前建立与第三方域名的连接(如 CDN、支付接口), <link rel="preconnect" href="https://cdn.example.com"> 。
四、用户体验优化(间接提升“感知性能”)
1. 骨架屏(Skeleton Screen)
- 首屏加载时显示灰色占位骨架,替代白屏或加载动画,让用户感知“内容正在加载”。
2. 加载状态反馈
- 按钮点击、表单提交时显示加载动画(如 spinner),避免用户重复操作。
3. 降级处理
- 网络差时,优先加载核心内容(如文字),非核心内容(如图片)延迟加载或显示低清版本。
4. 避免布局偏移(CLS)
- 图片/视频设置固定宽高,避免加载后尺寸变化导致页面跳动(影响用户体验和 Lighthouse 评分)。
五、监控与分析
- 用 Lighthouse、WebPageTest 等工具分析性能瓶颈(如长任务、未压缩资源)。
- 接入前端监控(如 Sentry、Fundebug),追踪线上报错和性能异常(如页面加载时间、接口响应时间),针对性优化。
这些手段的核心逻辑是:减少资源体积、减少请求次数、加快资源获取速度、降低运行时开销,同时通过优化用户感知提升体验。实际项目中需结合业务场景(如首屏优先级、用户设备类型)选择合适的方案~