42 lines
1.0 KiB
Markdown
42 lines
1.0 KiB
Markdown
# 性能规则
|
||
|
||
## 数据库优化
|
||
|
||
- 为常用查询字段添加索引(mac_address, region, school_name)
|
||
- 使用连接池(pool_size=20, max_overflow=40)
|
||
- 避免 N+1 查询问题
|
||
- 定期清理历史数据(保留90天)
|
||
- 使用 select_related/joinedload 预加载关联数据
|
||
|
||
**索引示例**:
|
||
```python
|
||
class ONUDevice(Base):
|
||
__tablename__ = "onu_devices"
|
||
|
||
mac_address = Column(String(17), index=True)
|
||
region = Column(String(100), index=True)
|
||
school_name = Column(String(200), index=True)
|
||
```
|
||
|
||
## 缓存策略
|
||
|
||
- Redis 缓存热点数据(设备状态)
|
||
- 缓存过期时间:30分钟
|
||
- 手动刷新有5分钟冷却限制
|
||
- 使用缓存键命名规范:`device:status:{device_id}`
|
||
|
||
## 异步处理
|
||
|
||
- SSH 状态检查使用 Celery 异步任务
|
||
- 批量导入使用后台任务
|
||
- 定时任务使用 Celery Beat(每30分钟)
|
||
- 分批处理大量设备(每批100个)
|
||
|
||
## 前端优化
|
||
|
||
- 组件懒加载
|
||
- 图片懒加载
|
||
- 虚拟滚动(大列表)
|
||
- 防抖和节流
|
||
- 资源压缩和 CDN
|