返回
TABAnimated骨架屏缓存策略机制浅析
IOS
2023-12-30 18:33:43
使用TABAnimated集成骨架屏的开发者,大概都知道其原理是基于原视图映射生成骨架层,在细节上不满意的地方可以通过预处理回调进行异步调整。对该对象使用一个plist文件来解释。同时,通过计数的方式,逐渐筛选出该用户经常加载的骨架屏,提高缓存命中率。缓存策略更多地是优化了…
而这种映射的方式,本质上**是** 系统先把目标视图的信息记录下来,然后在呈现的时候再通过骨架视图去重新匹配目标视图。这样的好处是,尽可能呈现出和目标视图一致的骨架屏,保证呈现动画的一致性,不管是在页面中还是在列表中。
当然,这种方案的缺点也**很** 明显,就是性能消耗较大。原因是系统需要遍历视图的树形结构,并把每个子视图的信息给记录下来,随后在呈现骨架屏的时候还要再次遍历以还原出映射视图。整个过程会比较耗费性能。而下面,我们将介绍一种以更少的性能消耗实现的另一种方案。
缓存 策略方案主要包括了三个步骤:
- 根据 用户的行为,对骨架屏进行统计,并对缓存项进行排序,从中筛选出最常用的骨架屏进行缓存。
- 缓存项最多只能占总存储空间的20%,且最多只能缓存10个项目。
- 当缓存已满时,如果需要缓存新的项,需要从最不常用的项开始逐个替换,直到新项被缓存。
总的来说,缓存策略的机制是基于对用户行为的统计分析,从中找出最常加载的骨架屏进行缓存,并对其进行优先加载,减少不必要的性能消耗,同时节省存储空间。在实现过程中,我们可以使用轻量级的统计库来记录和分析用户的行为,并使用LRU算法来管理缓存项。
以下是 TABAnimated骨架屏缓存策略的具体实现步骤:
- 使用LRU算法来管理缓存项,确保最常用的骨架屏始终处于缓存中。
- 当用户加载骨架屏时,首先检查缓存中是否有该骨架屏。如果有,则直接从缓存中加载,并记录该骨架屏的加载次数。如果没有,则需要从服务器加载该骨架屏,并将其添加到缓存中。
- 当缓存已满时,需要从最不常用的骨架屏开始逐个替换,直到新骨架屏被缓存。
- 定期对缓存中的骨架屏进行过期检查,并删除过期的骨架屏。
通过以上步骤,我们可以实现TABAnimated骨架屏的缓存策略,从而优化骨架屏的加载性能,并减少不必要的性能消耗。