其实谈到“数据缓存”,之前在开发中想必大家都已经使用过了,但是我觉着应该系统的对数据缓存进行一下了学习总结。本次总结主要是针对“数据缓存”,总结如下。
参考链接:https://www.cnblogs.com/wendingding/p/3950198.html
一、APP中为什么要用到数据缓存?
我们都知道APP中的数据都是通过网络请求从后台获取的,假设你有3个界面需要显示相同的数据,那么不用缓存技术的话,你可能就得对同一个URL进行3次网络请求。可能次数不多的时候感觉不到APP性能会出现问题,那假如是10次、100次(这里举的例子有些夸张)....你觉得你的APP会怎样?不用说肯定会卡顿的,而且也会对用户造成很不好的体验,还浪费用户的流量。所以可以简单的将数据缓存概括为如下内容:
使用场景:
就如同上边的例子一样,你请求一次和请求多次结果肯定是一样的,因为服务器返回给你的数据都是同一组数据。
简略图如下:
![](https://img.haomeiwen.com/i2121726/8402adf55fa6b233.png)
1、针对上图分析可能会出现如下现象:
(1)、由于每次使用数据的时候都是发请求,假如网络
不稳定的话,服务器的数据可能会返回不回来。
(2)、数据量稍微有些大的时候也有可能出现卡顿的现
象。
(3)、站在使用者的角度,可能会浪费流量。
当然如果出现上述情况的话,这时候“数据缓存”的重要性就体现出来了。
二、加上缓存之后分析如下:
获取数据的分析图:
![](https://img.haomeiwen.com/i2121726/cd103a4338dcbc8a.png)
假设客户端内存中没有数据,硬盘中也没有数据,那么客户端向服务器第一次请求数据并且成功后,服务器返回数据之后的流程如下图。
![](https://img.haomeiwen.com/i2121726/5263a2c77cbc2361.png)
当服务器返回数据时候需要注意几点:
1.服务器返回的数据,我们肯定是会对其进行“解析”之后在进行显示,那么将数据缓存到硬盘的时候肯定缓存的是解析之后的数据。
2.此时的缓存情况是:
内存缓存
与硬盘缓存
中都有数据。3.再次请求数据的时候会分为两种情况:
(1)、如果程序并没有被关闭,一直在运行的话,那么此时
内存缓存
与硬盘缓存
中都有数据。当我们此时在此请求数据时就直接可以从“内存缓存”中提取数据进行显示。(2)、如果程序重新启动
那么此时内存缓存已经消失,没有数据,硬盘缓存依旧存在,还有数据。如果此时再次请求数据,需要读取内存中缓存的数据。因为从硬盘缓存中读取数据后,内存缓存中又有数据了。
至于iOS中的缓存机制大家可以参考这篇博客进行学习[http://blog.csdn.net/czkyes/article/details/51453420]
网友评论