topfans/frontend/utils/performance-config.js
2026-04-07 23:08:49 +08:00

152 lines
4.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 性能优化配置模块
* 集中管理所有性能相关的配置参数
*/
// 轮询配置
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
}