爲了選擇一個優秀的緩存框架,我看了一些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