BlobCache框架图
BlobCache算法,这个算法的核心就是将所有的缓存数据都保存在同一个data文件中,记录缓存数据的索引保存在index文件中,由于index文件内存占用较小,读写时会把整个index文件映射至内存,然后使用RandomAccessFile随机读取接口,像操作指针一样控制index的偏移量读写data文件对应位置的数据。由于缓存文件存储在同一个文件下,缓存数据只能增加不能删除,BlobCache巧妙通过两个data文件(active和inactive)的翻转来实现缓存数据的删除更新。
BlobCache、DiskLruCache读取数据流程图对比
BlobCache、DiskLruCache读取时间对比
经过与DiskLruCache进行对比,虽然BlobCache在存储速度上会比DiskLruCache略慢,但是在读取速度上是有很大优势的,尤其是对于100k以内这种小尺寸的图片,实测在晓龙845平台单张缓存的读取时间可以降低到1ms以下。