性能优化指南
系统内置了多项性能优化,保障百万级数据量下的快速访问。
一、已实施的数据库优化
- 索引优化:为 vod_data 表创建了 6 个常用索引(站点ID、是否失效、创建时间、频道、采集时间、分类)
- 全文索引:建立了 ft_name_actor 全文索引,加速标题和演员搜索
- COUNT 缓存:视频总数查询结果缓存 5 分钟,避免全表 COUNT 扫描
- 搜索缓存:关键词搜索结果缓存 30 秒,减少重复查询
二、分页优化
- 游标分页:深分页使用 WHERE id < last_id LIMIT 20 替代 OFFSET,避免全表扫描
- 边界优化:超过 1 万条数据时自动切换为游标分页
- LIMIT 优化:列表查询始终使用 LIMIT 限制返回行数
三、缓存策略
系统使用多级文件缓存:
- 统计数据缓存:30 分钟(视频总数、分类统计等)
- 分类数据缓存:10 分钟(分类列表、分组分类)
- 站点数据缓存:5 分钟(资源站点列表)
- 全文索引状态:10 分钟(索引是否存在检测)
- COUNT 结果缓存:5 分钟(无筛选)/ 30 秒(有筛选)
四、前端优化
- 异步加载:后台管理页面统计数据异步加载,首屏快速渲染
- 图片懒加载:封面图片进入可视区域后才加载
- CSS/JS 压缩:静态资源已压缩
- CDN 加载:第三方库使用 CDN 加载
五、搜索优化
- 全文索引:支持 MATCH...AGAINST 全文搜索(需 MySQL 全文索引)
- 前缀匹配:单关键词搜索使用 LIKE 前缀匹配(可走索引)
- 搜索缓存:相同关键词搜索结果缓存 30 秒
- 降级策略:全文索引不可用时自动降级为 LIKE 查询
六、大数量级建议
当视频数量超过百万级时,建议:
- 定期执行重复合并,减少冗余数据
- 定期清理失效视频,控制数据量
- 在服务器空闲时段执行采集任务
- 开启图片本地化,减少外链请求
- 配置 MySQL 查询缓存和 innodb_buffer_pool_size

