152 lines
4.2 KiB
JavaScript
152 lines
4.2 KiB
JavaScript
/**
|
||
* 性能优化配置模块
|
||
* 集中管理所有性能相关的配置参数
|
||
*/
|
||
|
||
// 轮询配置
|
||
export const POLLING_CONFIG = {
|
||
MIN_INTERVAL: 10000, // 最小轮询间隔 10秒
|
||
MAX_INTERVAL: 15000, // 最大轮询间隔 15秒
|
||
RETRY_BACKOFF_MULTIPLIER: 1.5, // 重试退避倍数
|
||
MAX_RETRY_INTERVAL: 60000 // 最大重试间隔 60秒(失败时最长等待时间)
|
||
}
|
||
|
||
// 图片懒加载配置
|
||
export const LAZY_LOAD_CONFIG = {
|
||
ENABLED: true, // 是否启用懒加载
|
||
THRESHOLD: 100, // 距离可视区域多少像素时开始加载
|
||
PLACEHOLDER_COLOR: '#f5f5f5', // 占位符颜色
|
||
FADE_IN_DURATION: 300 // 图片淡入动画时长(毫秒)
|
||
}
|
||
|
||
// 气泡动画配置
|
||
export const BUBBLE_CONFIG = {
|
||
MAX_COUNT: 5, // 最大气泡数量
|
||
MIN_GENERATION_INTERVAL: 1000, // 最小生成间隔(毫秒)
|
||
MAX_GENERATION_INTERVAL: 2500, // 最大生成间隔(毫秒)
|
||
MIN_DURATION: 4000, // 最小动画时长(毫秒)
|
||
MAX_DURATION: 6000, // 最大动画时长(毫秒)
|
||
USE_GPU_ACCELERATION: true // 是否使用 GPU 加速
|
||
}
|
||
|
||
// 缓存配置
|
||
export const CACHE_CONFIG = {
|
||
SCREEN_SIZE_CACHE: true, // 是否缓存屏幕尺寸
|
||
PROGRESS_DATA_EXPIRY: 5 * 60 * 1000, // 进度数据缓存过期时间(5分钟)
|
||
STALE_DATA_THRESHOLD: 30000 // 数据过时阈值(30秒)
|
||
}
|
||
|
||
// 资源加载配置
|
||
export const RESOURCE_CONFIG = {
|
||
CRITICAL_LOAD_TIMEOUT: 3000, // 关键资源加载超时(毫秒)
|
||
NON_CRITICAL_LOAD_DELAY: 1000, // 非关键资源延迟加载时间(毫秒)
|
||
MAX_CONCURRENT_LOADS: 3, // 最大并发加载数
|
||
RETRY_COUNT: 2 // 加载失败重试次数
|
||
}
|
||
|
||
// 开发/生产环境配置
|
||
export const ENV_CONFIG = {
|
||
isDevelopment: process.env.NODE_ENV === 'development',
|
||
isProduction: process.env.NODE_ENV === 'production'
|
||
}
|
||
|
||
// 性能监控配置
|
||
export const MONITOR_CONFIG = {
|
||
// 全局开关:根据环境自动启用/禁用
|
||
// 开发环境默认启用,生产环境默认禁用
|
||
ENABLED: ENV_CONFIG.isDevelopment, // 主开关
|
||
|
||
// 手动控制开关(优先级高于 ENABLED)
|
||
// 设置为 true 强制启用,false 强制禁用,null 使用 ENABLED 的值
|
||
FORCE_ENABLE: false,
|
||
|
||
LOG_LEVEL: ENV_CONFIG.isDevelopment ? 'debug' : 'warn', // 日志级别: 'debug' | 'info' | 'warn' | 'error'
|
||
TRACK_FPS: ENV_CONFIG.isDevelopment, // 是否追踪帧率(开发模式)
|
||
TRACK_MEMORY: false, // 是否追踪内存使用(开发模式)
|
||
|
||
// 自动打印报告(页面卸载时)
|
||
AUTO_PRINT_REPORT: ENV_CONFIG.isDevelopment
|
||
}
|
||
|
||
/**
|
||
* 获取当前环境的配置
|
||
* @returns {Object} 配置对象
|
||
*/
|
||
export function getCurrentConfig() {
|
||
return {
|
||
polling: POLLING_CONFIG,
|
||
lazyLoad: LAZY_LOAD_CONFIG,
|
||
bubble: BUBBLE_CONFIG,
|
||
cache: CACHE_CONFIG,
|
||
resource: RESOURCE_CONFIG,
|
||
monitor: MONITOR_CONFIG,
|
||
env: ENV_CONFIG
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 更新配置(用于运行时调整)
|
||
* @param {string} category - 配置类别
|
||
* @param {Object} updates - 更新的配置项
|
||
*/
|
||
export function updateConfig(category, updates) {
|
||
const configs = {
|
||
polling: POLLING_CONFIG,
|
||
lazyLoad: LAZY_LOAD_CONFIG,
|
||
bubble: BUBBLE_CONFIG,
|
||
cache: CACHE_CONFIG,
|
||
resource: RESOURCE_CONFIG,
|
||
monitor: MONITOR_CONFIG
|
||
}
|
||
|
||
if (configs[category]) {
|
||
Object.assign(configs[category], updates)
|
||
console.log(`[性能配置] ${category} 已更新:`, configs[category])
|
||
} else {
|
||
console.warn(`[性能配置] 未知的配置类别: ${category}`)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 重置为默认配置
|
||
*/
|
||
export function resetConfig() {
|
||
console.log('[性能配置] 重置为默认配置')
|
||
// 重新导入默认值
|
||
Object.assign(POLLING_CONFIG, {
|
||
MIN_INTERVAL: 10000,
|
||
MAX_INTERVAL: 15000,
|
||
RETRY_BACKOFF_MULTIPLIER: 1.5,
|
||
MAX_RETRY_INTERVAL: 60000
|
||
})
|
||
|
||
Object.assign(LAZY_LOAD_CONFIG, {
|
||
ENABLED: true,
|
||
THRESHOLD: 100,
|
||
PLACEHOLDER_COLOR: '#f5f5f5',
|
||
FADE_IN_DURATION: 300
|
||
})
|
||
|
||
Object.assign(BUBBLE_CONFIG, {
|
||
MAX_COUNT: 5,
|
||
MIN_GENERATION_INTERVAL: 1000,
|
||
MAX_GENERATION_INTERVAL: 2500,
|
||
MIN_DURATION: 4000,
|
||
MAX_DURATION: 6000,
|
||
USE_GPU_ACCELERATION: true
|
||
})
|
||
}
|
||
|
||
export default {
|
||
POLLING_CONFIG,
|
||
LAZY_LOAD_CONFIG,
|
||
BUBBLE_CONFIG,
|
||
CACHE_CONFIG,
|
||
RESOURCE_CONFIG,
|
||
MONITOR_CONFIG,
|
||
ENV_CONFIG,
|
||
getCurrentConfig,
|
||
updateConfig,
|
||
resetConfig
|
||
}
|