美文网首页
iOS Cache 数据缓存

iOS Cache 数据缓存

作者: Loki_ | 来源:发表于2016-10-25 14:33 被阅读485次

cache里的基本存储单元是cacheline即缓存行,缓存通常分为一级缓存和二级缓存,有些还有三级缓存,通常数据传递路线是硬盘到内存到二级缓存到一级缓存再到cpu寄存器,cpu读取数据时,首先会先从一级缓存那里读取,如果该数据存在的话(即cache命中),直接取出数据,这里并没有访问内存,如果数据不在一级缓存,cpu就会到二级缓存那里寻找,同样,如果存在则直接取出数据,如果不存在,那就得从内存载入该数据了,这时就需要访问一次内存,缓存就是为了提高cpu的工作效率。

三方框架SDWebImage下载图片二级缓存(既在显示图片之前会先去内存缓存中找,如果找到了就显示,如果没有就去磁盘中加载二进制数据,如果磁盘中也没有就会去下载。)的操作逻辑:

// 内存缓存(指一个字典属性)思路

/*

001 当把图片下载完成之后需要把该图片保存到内存缓存

002 在需要显示图片的时候,先检查本地的缓存中时候已经下载了该图片

003 如果缓存中有该图片,直接设置

004 如果缓存中没有改图片,此时需要去下载图片

*/

// 磁盘缓存(沙盒Caches下)思路

/*

001 当图片下载完成之后除了保存到内存缓存中之外,还需要保存一份到磁盘缓存中

002 当图片需要显示的时候,先检查内存缓存,如果内存缓存中有数据那么就直接设置

003 如果内存缓存中没有数据,那么再去检查磁盘缓存

004 如果有数据,那么就直接拿来设置就可以 | 保存一份到内存缓存中

005 如果没有数据,那么这个时候再去下载数据

*/

// 改善缓存结构(内存缓存--->二级缓存结构[内存缓存-沙盒缓存])

根据沙盒的特点 ,沙盒是逻辑存储,一重启 tmp数据没了,document 和library还在存在,所以那就说明tmp是临时的内部存储器,临时内存而document和library是外存,是存储到物理硬盘上的。(我这么理解肯定有误,待改正),tmp是一级缓存,document和library是二级缓存。

文件夹tmp属于临时存储,那么tmp文件夹里面的文件,tmp文件会在应用退出后清空。

Library基本上不会清除,但在内存不足的情况下,可能会被清除,也有一些开源库使用这个目录,一般不会有问题。

Documents文件夹是开发者自己管理的文件目录,操作性很大,常用来作数据持久化

相关文章

  • iOS Cache 数据缓存

    cache里的基本存储单元是cacheline即缓存行,缓存通常分为一级缓存和二级缓存,有些还有三级缓存,通常数据...

  • HBase读流程

    Meta Cache是客户端缓存元数据的Block Cache是读缓存,缓存实际数据1)Clinet先访问Zook...

  • 分布式缓存(一)

    分布式缓存(一) 数据库缓存 Mysql 查询缓存(Query cache) 当打开了Query Cache功能,...

  • 移动端缓存方案

    移动端缓存方案 标签(空格分隔): 缓存 移动端 Cache目的 Cache几乎无处不在,iOS系统clean m...

  • NSCache和RunLoop

    NSCache *cache; cache.countLimit = 10;最多缓存10个数据。可以控制你的缓存。...

  • iOS标准库中常用数据结构和算法之cache

    上一篇:iOS标准库中常用数据结构和算法之内存池 ?缓存Cache 缓存是以键值对的形式进行数据的存储和检索,内部...

  • iOS / Cache网络缓存

    iOS Cache-Control网络缓存 - 简书 NSURLRequest各种缓存方式讲解_dean19900...

  • 技术在于交流,知识在于收集(六)

    收集的一些iOS开发技术博客与牛人共同进步 Cache iOS 网络缓存扫盲篇 缓存、缓存算法和缓存框架简介 Bl...

  • 4、spring-boot使用cache

    spring cache cache 缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从...

  • 数据缓存Cache

    jQuery 或者 原生中,缓存数据使用data 全局的data方法 一个全新的 Data 构造函数,uid用来...

网友评论

      本文标题:iOS Cache 数据缓存

      本文链接:https://www.haomeiwen.com/subject/ypuruttx.html