2024-02-29 仪表盘/页面的统计类组件缓存命中率优化

在仪表盘和页面中,针对统计类型的组件,为了提高组件的加载速度,对统计结果做了缓存,以减少重复的统计对数据库带来的计算压力。统计类组件包括:表格图、单值图、图表、多项统计、分类汇总、进度条。
用户在访问组件时,如果发现有缓存则直接返回缓存的统计结果,避免查询数据库,如果发现该组件没有缓存,则会进行数据库的统计查询,同时生成缓存。
当组件的数据源表格中有数据变化时,包含对数据的增、删、改,则会删除缓存,避免陈旧的缓存导致统计数据无法即时更新。
上述机制的设计在历史开发中也产生了一些缺陷,没有准确识别关联数据和关联附加数据的变化,也没有区分组件的数据源是来自于协作表格还是数据仓库。
为处理上述问题产生了两种极端操作,或过大范围的清理缓存,或遗留部分表格没有清理缓存。
就导致了时而会出现缓存被频繁清理,让缓存机制没有发挥作用,时而统计结果无法更新的问题。
经过本次优化重新梳理了组件与表格的关系,精细记录了组件配置中用到的关联字段与关联附加的字段所关联的原始表格,同时明确区分了数据源来自于协作表格还是数据仓库。
通过这个清晰的组件与表格的关系,本次实现了当表格数据发生变更后,只会清理与之准确相关的组件的缓存,同时延长缓存的有效期为 24 小时。
由此极大的提高了组件缓存的利用率,进而加快了仪表盘或页面的加载速度。
2024-04-01 更新
818 次查看
0