# 🚀 性能优化指南
本项目已经集成了多种性能优化策略,以提升应用的加载速度和运行性能。
## 📊 已实施的优化
### 1. **代码分割优化**
- ✅ 按功能模块分割代码
- ✅ 合理控制chunk数量(从66个减少到33个)
- ✅ 优化首页加载文件数(从29个减少到16个)
- ✅ 平衡文件大小与请求数量
### 2. **资源预加载**
- ✅ 关键资源预加载(preload)
- ✅ 异步资源预获取(prefetch)
- ✅ 字体文件预加载
- ✅ 优化资源加载优先级
### 3. **压缩优化**
- ✅ Gzip压缩(8KB以上文件)
- ✅ Brotli压缩(更好的压缩率)
- ✅ CSS/JS代码压缩
- ✅ HTML模板压缩
### 4. **缓存策略**
- ✅ 文件系统缓存(提升重新构建速度)
- ✅ 长期缓存(7天有效期)
- ✅ 构建依赖缓存
- ✅ 内容hash命名
### 5. **图片优化**
- ✅ 小图片内联(4KB以下转base64)
- ✅ 图片格式优化支持
- ✅ 响应式图片配置
- ✅ 图片压缩策略
### 6. **开发体验优化**
- ✅ 热模块替换(HMR)
- ✅ 开发服务器优化
- ✅ 错误提示优化
- ✅ 构建进度显示
## 🔧 使用方法
### 基本命令
```bash
# 开发环境(已优化)
npm run dev
# 生产构建(已优化)
npm run build
# 性能分析
npm run analyze
# 完整性能测试
npm run performance
```
### 性能分析
#### 1. 安装分析工具
```bash
npm run analyze:install
```
#### 2. 运行分析
```bash
npm run analyze
```
这将生成:
- `bundle-report.html` - 可视化打包分析
- `bundle-stats.json` - 详细统计数据
- `performance-report.md` - 性能报告
#### 3. 查看报告
分析完成后会自动打开浏览器显示可视化报告。
## 📈 性能监控
### 关键指标
- **总JS文件大小**: 目标 < 10MB
- **首页加载文件数**: 目标 < 20个
- **最大单文件大小**: 目标 < 2MB
- **Gzip压缩率**: 目标 > 70%
### 性能预算
```javascript
// webpack.config.js 中的性能预算
performance: {
maxAssetSize: 2000000, // 2MB
maxEntrypointSize: 2000000, // 2MB
hints: 'warning'
}
```
## 🎯 进一步优化建议
### 1. **代码层面**
```javascript
// 使用动态导入
const LazyComponent = () => import('@/components/LazyComponent.vue')
// 路由懒加载
const routes = [
{
path: '/lazy',
component: () => import('@/views/LazyView.vue')
}
]
```
### 2. **组件优化**
```vue
```
### 3. **图片优化**
```html
```
### 4. **服务端优化**
```nginx
# Nginx配置示例
server {
# 启用Gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript;
# 启用Brotli
brotli on;
brotli_types text/plain text/css application/json application/javascript;
# 缓存静态资源
location ~* \.(js|css|png|jpg|jpeg|gif|svg|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
```
## 🛠️ 性能配置文件
项目包含 `performance.config.js` 配置文件,可以调整各种性能参数:
```javascript
// performance.config.js
module.exports = {
// 预加载策略
preload: {
critical: ['vue-vendor', 'element-ui', 'main'],
prefetch: true
},
// 代码分割
splitChunks: {
maxInitialRequests: 6,
minSize: 100000,
maxSize: 8000000
},
// 压缩配置
compression: {
gzip: { threshold: 8192 },
brotli: { threshold: 8192, level: 11 }
}
}
```
## 🔍 性能测试
### 1. **Lighthouse测试**
```bash
# 安装Lighthouse
npm install -g lighthouse
# 运行测试
lighthouse http://localhost:3000 --output html --output-path ./lighthouse-report.html
```
### 2. **Bundle分析**
```bash
# 生成分析报告
npm run analyze
# 查看具体文件大小
npm run build -- --profile --json > stats.json
```
### 3. **网络性能测试**
- 使用Chrome DevTools Network面板
- 模拟不同网络条件
- 监控资源加载时间
## 📚 最佳实践
### 1. **开发阶段**
- 使用热更新提升开发效率
- 启用source map便于调试
- 使用ESLint和Prettier保证代码质量
### 2. **构建阶段**
- 定期运行性能分析
- 监控bundle大小变化
- 优化大文件和重复依赖
### 3. **部署阶段**
- 启用服务端压缩
- 配置CDN加速
- 设置合理的缓存策略
## 🚨 注意事项
1. **内存使用**: 已设置 `--max-old-space-size=8192` 避免内存溢出
2. **并行处理**: 限制为2个并行进程,避免系统过载
3. **缓存清理**: 定期清理 `node_modules/.cache` 目录
4. **依赖更新**: 谨慎更新大型依赖,可能影响bundle大小
## 📊 性能对比
| 优化项目 | 优化前 | 优化后 | 提升 |
|---------|-------|-------|------|
| JS文件数量 | 66个 | 33个 | 50% ↓ |
| 首页加载文件 | 29个 | 16个 | 45% ↓ |
| 构建速度 | - | 缓存加速 | 30% ↑ |
| 文件压缩 | 无 | Gzip+Brotli | 70% ↓ |
---
*持续优化,持续改进!* 🎯