perf(backend+frontend): 列表API响应体积优化 3.1MB→145KB (↓95.4%)

- 后端: JPQL构造器投影排除LONGTEXT大字段(uploadedImages/videoReferenceImages)
- 后端: DTO层过滤非分镜图类型的base64内联resultUrl
- 前端: 列表缩略图从video改为img loading=lazy,消除172并发请求
- 前端: download函数增加resultUrl懒加载(详情接口兜底)
- 文档: 新增性能优化报告 docs/performance-optimization-report.md
This commit is contained in:
blandarebiter
2026-04-10 18:46:37 +08:00
commit 90b5118e45
280 changed files with 92468 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
/**
* API 基础路径工具函数
* 自动适配 ngrok 内网穿透和本地开发环境
*/
/**
* 获取 API 基础路径
* @returns {string} API 基础路径
*/
export function getApiBaseURL() {
// 检查是否在浏览器环境中
if (typeof window !== 'undefined') {
const hostname = window.location.hostname
// 如果当前域名包含 ngrok 或通过 Nginx 访问,使用相对路径
if (hostname.includes('ngrok') ||
hostname === 'localhost' ||
hostname === '127.0.0.1' ||
hostname.startsWith('172.22.') ||
window.location.port === '') { // 通过 Nginx 代理访问时没有端口号
// 通过 Nginx 访问,使用相对路径(自动适配当前域名)
return '/api'
}
}
// 默认开发环境,使用相对路径(通过 Vite 代理)
return '/api'
}
/**
* 构建完整的 API URL
* @param {string} path - API 路径(如 '/users' 或 'users'
* @returns {string} 完整的 API URL
*/
export function buildApiURL(path) {
const baseURL = getApiBaseURL()
// 确保路径以 / 开头
const cleanPath = path.startsWith('/') ? path : `/${path}`
return `${baseURL}${cleanPath}`
}