前面一片文章介绍了如何上传和下载文件,这篇文章将介绍一下如何在iOS设备中进行缓存。
这篇文章将只介绍一下将内容缓存到内存中,下一篇文章就介绍一下在iOS磁盘上缓存内容。
使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行。有时候我们需要将远程web服务器获取的数据缓存起来,减少对同一个url多次请求。
内存缓存我们可以使用sdk中的NSURLCache类。NSURLRequest需要一个缓存参数来说明它请求的url何如缓存数据的,我们先看下它的CachePolicy类型。
1、NSURLRequestUseProtocolCachePolicy NSURLRequest默认的cache policy,使用Protocol协议定义。
2、NSURLRequestReloadIgnoringCacheData 忽略缓存直接从原始地址下载。
3、NSURLRequestReturnCacheDataElseLoad 只有在cache中不存在data时才从原始地址下载。
4、NSURLRequestReturnCacheDataDontLoad 只使用cache数据,如果不存在cache,请求失败;用于没有建立网络连接离线模式;
5、NSURLRequestReloadIgnoringLocalAndRemoteCacheData:忽略本地和远程的缓存数据,直接从原始地址下载,与NSURLRequestReloadIgnoringCacheData类似。
6NSURLRequestReloadRevalidatingCacheData:验证本地数据与远程数据是否相同,如果不同则下载远程数据,否则使用本地数据。
NSURLCache还提供了很多方法,来方便我们实现应用程序的缓存机制。下面我通过一个例子来说明,这个例子减少我们对同一个url多次请求。看下面代码:
这个例子中,我们请求url为www.baidu.com的网站。如果这个url被缓存了,我们直接从缓存中获取数据,否则从www.baidu.com站点上重新获取数据。我们设置了缓存大小为1M。
使用下面代码,我将请求的过程打印出来:
当我们第一次点击界面上的按钮,打印的结果如下:
在看我们第二次点击界面上的按钮,打印结果如下:
2011-07-30 18:52:18.894 Caching[3971:207] 即将发送请求
|
2011-07-30 18:52:18.895 Caching[3971:207] 将接收输出
|
2011-07-30 18:52:18.895 Caching[3971:207] 接受数据
|
2011-07-30 18:52:18.896 Caching[3971:207] 数据长度为 = 7410
|
2011-07-30 18:52:18.896 Caching[3971:207] 请求完成 |
我们看到没有“将缓存输出”一项,请求到的数据是第一次请求的累积,也就是第二次是从内存中获取数据的。
总结:本文简单的介绍了一下iOS的内存缓存机制,下一篇文章将重点介绍一下本地缓存机制
分享到:
相关推荐
这篇文章将介绍一下如何在iOS设备中进行缓存,本文先介绍一下将内容缓存到内存中,下一篇文章就介绍一下在iOS磁盘上缓存内容。
iOS离线缓存: github地址:https://github.com/hrscy/OfflineCache 简书地址:http://www.jianshu.com/p/426c66e46f9e
ios通过SQLite自定义数据缓存
这是一个异步加载 图片缓存管理的小例子 简化对网络图片加载的处理
在iOS中使用SDImageView实现缓存图片,可以自己指定缓存图片的大小
在设置界面总是遇见清除缓存的地方,还用部分号码需要截取一部分星号隐藏
ios应用源码之加载器(当下载或加载缓存时候用的进度条)
清除缓存基本上都是在设置界面的某一个Cell,于是我们可以把清除缓存封装在某一个自定义Cell中 如下图所示: 实现的具体步骤 使用注意:过程中需要用到第三方库,请提前安装好:SDWebImage、SVProgressHUD。 1. ...
苹果ios开发150个实例源码大全: 一个画板,可以选择画笔的颜色 一个简单的page scroll 一个简单的rss阅读器 一个简单的分享到facebookdemo 一个简单的图片编辑器 一个简单的层管理 一个简单的空白页面demo 一个...
网络请求是基于AF封装的,自定义缓存时间和永久缓存,非常方便
这个功能类文件很小,代码量也很少,使用很简单,主要功能是给iOS项目做一些字符串和图片的缓存
在开发移动应用的时候比如Android,IOS,因为手机流量、网速、内存等这些因素,当我们的移动应用是针对互联网,并要频繁访问网络的话,对网络优化这块就显得尤为重要了
NULL 博文链接:https://zhangmingwei.iteye.com/blog/2092097
这就涉及到缓存, 但是缓存又分为文件缓存,归档等,realm 太过笨重,归档太麻烦,最后选择了文件缓存, 看了很多博客,在参考了别人的缓存开源项目,功能太过简单单一化, 比如:我想删除某一个文件下的缓存信息,...
功能包括: WKWebView的使用、JS和OC的交互、网页内容加载进度条的实现、WKWebView+UITableView混排 、 WKWebView离线缓存等。GitHub:https://github.com/wsl2ls/iOS_TipsiOS_Tips集合简介:1、暗黑模式2、AppleID...
在项目中经常需要做清除缓存的功能,但是很可能没有考虑全面,造成一些BUG,这里写了一个比较全面的清除缓存功能
有缓存文件过期机制默认一周 3.显示缓存大小/个数,全部清除缓存/单个文件清除缓存/按时间清除缓存方法多样并且都可以自定义路径可扩展性强 4.离线下载功能 5.多种请求类型的判断。也可不遵循,自由随你定...
主要给大家介绍了关于iOS开发之1行代码实现缓存计算及清除缓存的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
基于YYCache和系统的NSURLProtocol实现WebView离线缓存功能