@tianyio/quality-helper
Version:
A comprehensive quality helper tool for project scaffolding and management
177 lines (125 loc) • 4.38 kB
Markdown
# 性能监控和分析指南
本文档详细说明了项目中集成的性能监控和分析工具,以及如何使用它们来优化应用性能。
## 1. 性能监控工具
### 1.1 Web Vitals 集成
项目已集成 [web-vitals](https://github.com/GoogleChrome/web-vitals)
库,用于监控核心 Web 指标:
- **CLS (Cumulative Layout Shift)** - 累积布局偏移
- **FCP (First Contentful Paint)** - 首次内容绘制
- **INP (Interaction to Next Paint)** - 交互到下次绘制(替代 FID)
- **LCP (Largest Contentful Paint)** - 最大内容绘制
- **TTFB (Time to First Byte)** - 首字节时间
### 1.2 使用方法
在应用入口文件中集成基础性能监控:
```typescript
import { initPerformanceMonitor } from '@tianyio/fast-util-lib'
// 初始化性能监控
const monitor = initPerformanceMonitor({
onReport: metric => {
// 自定义上报逻辑
console.log(metric)
},
})
```
### 1.3 性能监控工具模块功能
性能监控工具模块提供了以下功能:
1. **核心 Web 指标监控**:
- CLS、FCP、INP、LCP、TTFB 指标收集
- 自定义上报回调
2. **自定义性能标记**:
- `markPerformanceEvent` - 标记自定义性能事件
- `measurePerformance` - 测量两个标记之间的时间
3. **资源性能监控**:
- `getResourcePerformance` - 获取资源加载性能
- `getFirstScreenRenderTime` - 获取首屏渲染时间
## 2. 构建产物分析工具
### 2.1 Rollup Plugin Visualizer
使用 [rollup-plugin-visualizer](https://github.com/btd/rollup-plugin-visualizer)
进行构建产物分析。
#### 使用方法:
```bash
# 启用构建分析
ANALYZE=true pnpm build
```
构建完成后会自动生成 `dist/stats.html`
文件,可在浏览器中打开查看详细的构建产物分析报告。
## 3. 代码分割策略
### 3.1 动态代码分割
项目采用智能动态代码分割策略,Vite 会自动处理代码分割。
### 3.2 手动代码分割配置
在 `vite.config.ts` 中可以配置手动分割策略:
```javascript
export default defineConfig({
build: {
rollupOptions: {
output: {
manualChunks: {
// Vue 核心库
vue: ['vue'],
// 路由库
router: ['vue-router'],
// 状态管理
pinia: ['pinia'],
// 工具库
utils: ['@tianyio/fast-util-lib'],
},
},
},
},
})
```
## 4. 性能优化建议
### 4.1 构建优化
1. **Tree Shaking**:
- 确保使用 ES 模块导入
- 避免副作用代码
2. **代码压缩**:
- 使用 Terser 进行代码压缩
- 移除调试代码和未使用代码
3. **构建报告**:
- 启用 `reportCompressedSize: true`
### 4.2 运行时优化
1. **懒加载**:
- 路由组件懒加载
- 动态导入大型依赖
- 按需加载功能模块
2. **缓存策略**:
- 合理设置 HTTP 缓存头
- 使用 Service Worker 缓存静态资源
- 实现客户端数据缓存
3. **资源优化**:
- 图片压缩和格式优化
- 字体加载优化
- CSS 和 JavaScript 资源优化
## 5. 监控指标解读
### 5.1 核心 Web 指标
| 指标 | 目标值 | 说明 |
| ---- | ------- | ------------------------------ |
| LCP | < 2.5s | 衡量加载性能,最大内容绘制时间 |
| INP | < 200ms | 衡量交互性,交互到下次绘制时间 |
| CLS | < 0.1 | 衡量视觉稳定性,累积布局偏移 |
## 6. 性能问题诊断流程
### 6.1 构建性能问题诊断
1. **使用构建分析工具**:
```bash
ANALYZE=true pnpm build
```
查看构建产物大小分布,识别过大的依赖包。
2. **检查代码分割效果**:
- 确认依赖是否正确分割
- 检查重复依赖问题
### 6.2 运行时性能问题诊断
1. **使用浏览器开发者工具**:
- Performance 面板分析运行时性能
- Network 面板分析资源加载性能
2. **使用性能监控工具**:
```typescript
import { mark, measure } from '@tianyio/fast-util-lib'
// 标记关键性能点
mark('app-start')
// ... 应用初始化代码
mark('app-loaded')
// 测量关键路径时间
measure('app-load-time', 'app-start', 'app-loaded')
```
通过这些工具和策略,可以有效监控和优化应用性能,确保提供流畅的用户体验。