iOS Cache 整理

为了选择一个优秀的缓存框架,我看了一些github上star较多的缓存框架的源码,下面是一些总结。git

##Awesome Cache  使用swift3.0编写。这个比较简单,实现了内存缓存和文件缓存(一个key对应一个文件)。都是同步执行。能够设置缓存时间(时长或者日期),须要手动调用才会清除缓存。github

##PINCache   PINCache能够进行内存缓存和磁盘缓存。 磁盘缓存使用的是文件。线程安全的。其多线程实现挺复杂的,很厉害的样子。    ##YYCache算法

  • YYCache 磁盘缓存使用 数据库与文件相结合。他的数据库操做比较麻烦,有些东西没有看懂。你能够选择的磁盘缓存策略有三种:文件,数据库,二者混合。 当磁盘缓存策略是二者混合时, 其根据文件大小肯定数据到底缓存在哪里。当数据大于20M时缓存在文件中, 小于20M时缓存在数据库。数据库

  • 经过源码可发现其实现形式为:将缓存元素的key,size,cost,fileName,value等信息保存到数据库, 可是当size>20M是,将value保存在文件中, 数据库中的value置为null。 数据库中的fileName保存 value所在文件的路径。json

  • 支持同步和异步操做,实现了LRU 淘汰算法, 能够定时清除缓存数据,性能比较好。swift

##YTKKeyValueStore 数据使用数据库存储,包括三个字段:json,id(key),createdTime。其中json字段保存值是下面代码获得的,因此保存的值必须能够进行json 的序列化。缓存

NSData * data = [NSJSONSerialization dataWithJSONObject:object options:0 error:&error];
NSString * jsonString = [[NSString alloc] initWithData:data encoding:(NSUTF8StringEncoding)];
复制代码

另外,这个小东西使用FMDB进行数据库的操做。安全

想比较而言, YYCache性能较高。 而且你能够经过添加数据库中的字段来拓展缓存item的属性,以知足更复杂的需求。暂且就选这个了,遇到更好的缓存轮子后在更新。bash

相关文章
相关标签/搜索