iOS Cache 整理

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

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

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

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

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

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

##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的属性,以满足更复杂的需求。暂且就选这个了,遇到更好的缓存轮子后在更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值