chore:优化服务配置缓存逻辑,减少不必要的 API 调用;修复欢迎语加载逻辑,避免重复推送欢迎气泡;调整快捷问题样式以兼容低版本环境
This commit is contained in:
@@ -424,6 +424,18 @@ function disconnectWebSocket() {
|
||||
}
|
||||
// #endif
|
||||
|
||||
// PR-FIX (2026-09-20): getServiceConfig 短 TTL 缓存
|
||||
// 服务配置(含欢迎语)变更频率极低, 每次进聊天页都打 /api/kefu/info 纯属浪费;
|
||||
// TTL 60s + 失败不缓存, 配置保存后最多延迟 1 分钟生效
|
||||
var _serviceConfigCache = null;
|
||||
var _serviceConfigCacheAt = 0;
|
||||
var SERVICE_CONFIG_CACHE_TTL = 60 * 1000;
|
||||
|
||||
function resetServiceConfigCache() {
|
||||
_serviceConfigCache = null;
|
||||
_serviceConfigCacheAt = 0;
|
||||
}
|
||||
|
||||
export default {
|
||||
/**
|
||||
* 获取uniacid
|
||||
@@ -872,6 +884,12 @@ export default {
|
||||
* PR-7: URL 按 agent_id 路由
|
||||
*/
|
||||
async getServiceConfig() {
|
||||
// PR-FIX (2026-09-20): 命中缓存直接返回
|
||||
const nowTs = Date.now();
|
||||
if (_serviceConfigCache && (nowTs - _serviceConfigCacheAt) < SERVICE_CONFIG_CACHE_TTL) {
|
||||
console.log('[AI Service] getServiceConfig 命中缓存 (age=' + Math.round((nowTs - _serviceConfigCacheAt) / 1000) + 's)');
|
||||
return _serviceConfigCache;
|
||||
}
|
||||
try {
|
||||
const params = {
|
||||
url: resolveApiUrl('info'),
|
||||
@@ -901,6 +919,9 @@ export default {
|
||||
} else {
|
||||
console.warn('[AI Service] info 响应中未找到 config_uuid/config_uid/uuid 字段, 上传将缺少该参数。响应结构:', JSON.stringify(cfg));
|
||||
}
|
||||
// PR-FIX (2026-09-20): 成功响应写缓存 (失败不缓存, 下次重试)
|
||||
_serviceConfigCache = response.data;
|
||||
_serviceConfigCacheAt = Date.now();
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error('[AI Service] getServiceConfig error:', error);
|
||||
@@ -908,6 +929,14 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* PR-FIX (2026-09-20): 清除服务配置缓存
|
||||
* 供配置变更后主动调用 (目前 60s TTL 已足够, 预留显式失效入口)
|
||||
*/
|
||||
clearServiceConfigCache() {
|
||||
resetServiceConfigCache();
|
||||
},
|
||||
|
||||
/**
|
||||
* 清除会话历史(调用后端接口)
|
||||
* PR-7: URL 按 agent_id 路由
|
||||
|
||||
Reference in New Issue
Block a user