(本文档仅供参考)
问题说明
希望使用“计划任务”,去定时清理缓存,达到与系统运维中“清空缓存”入口相同的效果。
解决方案
使用计划任务,定时清理系统缓存,可参考如下任务代码。(注:对于v10.5 2022-10-22和之后的版本支持清空数据模型的缓存,2022-10-22之前的版本不支持清空数据模型的缓存。)
importPackage(Packages.smartbi.sdk.service.pool); importPackage(Packages.smartbi.freequery.client.config); importPackage(Packages.smartbi.composite); var poolService = new PoolService(connector); poolService.clearPoolByName("DBSQLResultStorePool"); poolService.clearPoolByName("ExecutedReportPool"); var objList =new Array(); connector.remoteInvoke("ConfigClientService", "clearCache", objList ); connector.remoteInvoke("ClearPoolCacheService", "clearCache", objList ); connector.remoteInvoke("CompositeService", "clearCache", objList ); connector.remoteInvoke("InsightService", "cleanTempTablePool", objList );
补充说明
上述示例代码中,调用的各项接口对应的缓存内容如下。
1、ConfigClientService.clearCache
包括连接池,ehcache,多语言,用户属性,服务器js,html,css等静态文件,地图区域,缓存字段,redis,操作日志等。
2、ClearPoolCacheService.clearCache()
包括对象池,hsql的缓存。
3、CompositeModule.clearCache
同ConfigClientService.clearCache。
4、InsightService.cleanTempTablePool
清空所有的透视临时表缓存。
关于清除“数据模型”缓存,其包含在ConfigClientService.clearCache中,建议是将上述代码一起调用,避免出现没有清理完全的情况。