7.8 KiB
7.8 KiB
网络诊断功能增强完成报告
📋 任务概述
目标: 增强网络诊断功能,添加预览文件加载速度检测,帮助精准定位预览文件加载慢的问题
完成时间: 2025-12-22
部署状态: ✅ 已部署到影子系统(5320)
✨ 新增功能
1. 预览图片加载测试
- 功能: 测试真实的3D场景预览图片加载速度
- 检测指标:
- 图片加载时间(秒)
- 文件大小(MB)
- 下载速度(MB/s)
- 警告阈值: 加载时间 > 3秒
2. 预览视频加载测试
- 功能: 测试主图视频/安装视频/种草视频的加载性能
- 检测指标:
- 视频元数据加载时间(首字节时间)
- 文件大小(MB)
- 视频URL
- 警告阈值: 元数据加载时间 > 5秒
3. 音频文件加载测试
- 功能: 测试音乐素材的加载性能
- 检测指标:
- 音频元数据加载时间
- 文件大小(MB)
- 音频URL
- 警告阈值: 元数据加载时间 > 3秒
4. DNS和连接测试
- 功能: 测试网络连接的底层性能
- 检测指标:
- DNS解析时间(ms)
- TCP连接时间(ms)
- 首字节时间/TTFB(ms)
- 总耗时(ms)
- 警告阈值: 总耗时 > 1000ms
🔧 技术实现
测试顺序
- DNS和连接测试(基础网络性能)
- 下载测速(通用下载速度)
- 上传测速(通用上传速度)
- 存储连通性(MinIO S3连接)
- 预览图片加载(新增)
- 预览视频加载(新增)
- 音频文件加载(新增)
关键技术点
1. 使用Performance API测量加载时间
const startTime = performance.now()
// 加载资源
const endTime = performance.now()
const loadTime = endTime - startTime
2. 使用Resource Timing API获取详细网络时序
const entries = performance.getEntriesByType('resource') as PerformanceResourceTiming[]
const entry = entries.find(e => e.name.includes('/api/network-status'))
if (entry) {
dnsTime = entry.domainLookupEnd - entry.domainLookupStart
connectTime = entry.connectEnd - entry.connectStart
ttfb = entry.responseStart - entry.requestStart
}
3. 测试真实素材文件
- 从API获取真实的素材数据
- 测试实际的预览URL
- 模拟用户真实的加载场景
4. 状态分类
- success: 测试成功,性能良好
- warning: 测试成功但性能较差(黄色警告)
- error: 测试失败(红色错误)
- testing: 正在测试中
📊 诊断报告格式
复制结果包含的信息
=== 网络诊断报告 ===
时间: 2025-12-22 14:30:00
浏览器: Mozilla/5.0 ...
当前URL: http://192.168.58.20:5320
=== 测试结果 ===
DNS和连接测试: ✓ 成功
总耗时: 150ms
详细信息: DNS解析: 10ms, TCP连接: 20ms, 首字节时间: 50ms, 总耗时: 150ms
下载测速: ✓ 成功
下载速度: 15.23 MB/s
上传测速: ✓ 成功
上传速度: 8.45 MB/s
存储连通性: ✓ 成功
存储服务连接正常
预览图片加载: ⚠ 警告
加载时间: 3.50秒 (2.15 MB/s)
详细信息: 总耗时: 3500ms, 文件大小: 7.52MB, URL: https://...
预览视频加载: ✓ 成功
元数据加载: 2.30秒 (文件: 15.20MB)
详细信息: 首字节时间: 2300ms, 总耗时: 2300ms, 文件大小: 15.20MB, URL: https://...
音频文件加载: ✓ 成功
元数据加载: 1.20秒 (文件: 5.50MB)
详细信息: 首字节时间: 1200ms, 总耗时: 1200ms, 文件大小: 5.50MB, URL: https://...
=== 网络环境信息 ===
在线状态: 在线
连接类型: 4g
下行速度: 10 Mbps
RTT延迟: 50 ms
=== 性能分析 ===
⚠ 预览图片加载较慢或失败,可能影响用户体验
提示: 请将此报告提供给技术支持以便快速定位问题
🎯 使用方法
1. 打开网络诊断
- 点击右上角用户头像
- 选择"网络诊断"菜单项
2. 开始诊断
- 点击"开始诊断"按钮
- 等待所有测试完成(约10-20秒)
3. 查看结果
- 绿色✓:测试成功,性能良好
- 黄色⚠:测试成功但性能较差
- 红色✗:测试失败
4. 复制报告
- 点击"复制结果"按钮
- 将报告提供给AI或技术支持
- AI可以根据详细的性能指标精准定位问题
🔍 问题诊断指南
预览图片加载慢
可能原因:
- S3存储访问慢(检查存储连通性测试)
- 图片文件过大(检查文件大小)
- 网络带宽不足(检查下载测速)
- DNS解析慢(检查DNS解析时间)
解决方案:
- 如果在内网,切换到内网地址(192.168.58.20)
- 优化图片大小和格式
- 使用CDN加速
- 检查MinIO配置
预览视频加载慢
可能原因:
- 视频文件过大
- 转码未完成(检查videoProcessingStatus)
- 网络带宽不足
- 首字节时间过长
解决方案:
- 等待视频转码完成
- 使用压缩后的预览视频
- 优化视频编码参数
- 检查服务器性能
音频文件加载慢
可能原因:
- 音频文件过大
- 存储访问慢
- 网络延迟高
解决方案:
- 压缩音频文件
- 使用更高效的音频格式
- 检查存储服务性能
📝 修改的文件
1. components/NetworkDiagnoseModal.tsx
修改内容:
- 扩展
TestResult接口,添加新的测试类型和详细信息字段 - 新增
testPreviewImageLoad()函数 - 预览图片加载测试 - 新增
testPreviewVideoLoad()函数 - 预览视频加载测试 - 新增
testPreviewAudioLoad()函数 - 音频文件加载测试 - 新增
testDNSAndConnection()函数 - DNS和连接测试 - 更新
startDiagnose()函数 - 按顺序执行所有测试 - 增强
copyResults()函数 - 生成更详细的诊断报告 - 更新UI显示 - 支持warning状态,显示详细信息
代码行数: 约700行(新增约300行)
✅ 测试验证
部署信息
- 目标环境: 影子系统
- 访问地址: http://192.168.58.20:5320
- 部署时间: 2025-12-22
- 构建状态: ✅ 成功
功能验证清单
- DNS和连接测试正常运行
- 下载测速正常运行
- 上传测速正常运行
- 存储连通性测试正常运行
- 预览图片加载测试正常运行
- 预览视频加载测试正常运行
- 音频文件加载测试正常运行
- 复制结果功能正常
- 警告状态正确显示(黄色背景)
- 详细信息正确显示(DNS、TTFB等)
🎉 预期效果
1. 精准定位问题
通过详细的性能指标,可以快速定位:
- 是网络问题还是服务器问题
- 是DNS问题还是带宽问题
- 是文件过大还是存储慢
2. 方便AI分析
复制的诊断报告包含:
- 完整的测试结果
- 详细的性能指标
- 网络环境信息
- 性能分析建议
AI可以根据这些信息快速给出解决方案。
3. 提升用户体验
- 用户可以自助诊断网络问题
- 技术支持可以快速定位问题
- 减少问题排查时间
📌 注意事项
- 测试时间: 完整测试需要10-20秒,请耐心等待
- 网络消耗: 测试会下载真实的预览文件,消耗一定流量
- 测试准确性: 测试结果受当前网络状况影响,建议多次测试
- 警告阈值: 当前阈值是根据经验设置的,可能需要根据实际情况调整
🚀 后续优化建议
- 添加历史记录: 保存诊断历史,对比不同时间的性能
- 自动诊断: 在页面加载慢时自动触发诊断
- 性能监控: 持续监控预览文件加载性能
- 智能建议: 根据诊断结果自动给出优化建议
- 批量测试: 测试多个预览文件,获得更准确的平均值
📞 技术支持
如果遇到问题,请:
- 运行网络诊断
- 复制完整的诊断报告
- 提供给AI或技术支持
- 说明具体的问题现象
报告生成时间: 2025-12-22 报告生成人: Kiro AI Assistant