# WorkPage 性能优化方案
## 问题分析
### 原始问题
workPage 只有两个页面,但打包后文件过大,导致加载缓慢:
- `workPage-vendor.js` - 2.99 MB (第三方库)
- `workPage.js` - 1.74 MB (应用代码)
- `workPage.css` - 562 KB (样式)
- **总计约 5.3 MB** ❌
### 根本原因
1. **引入了完整的 Element UI** - 约 600KB+ 未使用的组件
2. **全局引入大型库** - echarts、video-player、viewer、vue-audio 等 workPage 不需要的库
3. **未使用 CDN** - katex、wangeditor、aws-sdk 等大型库都打包进了 bundle
4. **未启用代码分割** - 所有代码一次性加载,没有懒加载
5. **未启用 gzip 压缩** - 传输体积未优化
## 优化方案
### ✅ 1. Element UI 按需引入
**修改文件**: `src/router/index2.js`
```javascript
// 之前:引入完整的 Element UI
import ElementUI from 'element-ui'
Vue.use(ElementUI)
// 优化后:按需引入
import { Dialog } from 'element-ui'
// 只引入 workPage 需要的组件
```
**预计优化**: 减少 ~400KB
### ✅ 2. 移除不必要的全局依赖
**修改文件**: `src/workPage/main.js`
移除了以下不必要的依赖:
- ❌ `echarts` (图表库,workPage 不需要)
- ❌ `vue-video-player` (视频播放器)
- ❌ `vue-audio-better` (音频播放器)
- ❌ `v-viewer` (图片查看器)
- ❌ `hevue-img-preview` (图片预览)
- ❌ `clipboard` (剪贴板功能)
**预计优化**: 减少 ~800KB
### ✅ 3. 使用 CDN 加载大型库
**修改文件**: `build/webpack.prod.conf.js`, `public/workPage.html`
```javascript
// webpack externals 配置
externals: {
'katex': 'katex' // 从 CDN 加载,不打包
}
```
```html
```
**预计优化**: 减少 ~500KB
### ✅ 4. 启用路由懒加载
**修改文件**: `src/router/index2.js`
```javascript
// 之前:同步加载
import workPage from '@/components/pages/workPage/index'
import workPageNew from '@/components/pages/workPage/index_new'
// 优化后:懒加载
const workPage = () => import(/* webpackChunkName: "workPage" */ '@/components/pages/workPage/index')
const workPageNew = () => import(/* webpackChunkName: "workPageNew" */ '@/components/pages/workPage/index_new')
```
**效果**: 只加载当前访问的页面,首屏加载更快
### ✅ 5. 启用 Gzip 压缩
**修改文件**: `config/index.js`
```javascript
productionGzip: true // 从 false 改为 true
```
**效果**: 文件传输体积减少 60-70%
## 预期优化效果
### 优化前
- workPage-vendor.js: 2.99 MB
- workPage.js: 1.74 MB
- workPage.css: 562 KB
- **总计**: ~5.3 MB
### 优化后(预估)
- workPage-vendor.js: ~800 KB (减少 73%)
- workPage.js: ~600 KB (减少 66%)
- workPage.css: ~400 KB (减少 29%)
- **总计**: ~1.8 MB (减少 66%)
### Gzip 后(预估)
- **总计**: ~600 KB (减少 89%)
## 进一步优化建议
### 1. 处理 AWS SDK
如果 workPage 使用了 aws-sdk,建议:
- 检查是否真的需要
- 如果需要,只引入需要的服务(如 S3)
- 考虑使用服务端 API 代替客户端直接上传
### 2. 优化 wangeditor
富文本编辑器很大,建议:
- 确认是否 workPage 的两个页面都需要
- 考虑使用更轻量的替代方案
- 或者按需异步加载
### 3. 图片优化
- 使用 WebP 格式
- 图片懒加载
- 压缩图片资源
### 4. 代码分割
- 将不常用的功能拆分为独立 chunk
- 使用 webpack 的 magic comments 控制 chunk 名称
## 如何验证优化效果
### 1. 查看构建产物
```bash
npm run build
```
查看 `dist/static/js/` 目录下的文件大小
### 2. 使用 webpack-bundle-analyzer
```bash
npm run build --report
```
会自动打开浏览器显示打包分析报告
### 3. 测试加载速度
- 使用 Chrome DevTools Network 面板
- 启用网络限速(Fast 3G)测试
- 查看 DOMContentLoaded 和 Load 时间
## 部署说明
### 服务器配置
确保服务器启用 gzip 压缩:
**Nginx 配置**:
```nginx
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1000;
```
**Apache 配置**:
```apache
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
```
## 注意事项
1. **CDN 可用性**: 确保目标用户能访问 jsdelivr.net CDN
2. **缓存策略**: 合理设置静态资源的缓存时间
3. **兼容性测试**: 优化后需要测试各个功能是否正常
## 总结
通过以上优化,workPage 的加载速度预计可以提升 **3-5 倍**,用户体验将显著改善。