第三方网络请求库

* 我们在对网络请求的时候,可以使用系统为我们提供的NSURLRequest和NSURLConnection,它基本能实现我们的基本功能。

* 但是有时我们使用第三方封装的库,可以轻易实现使用系统方法比较难以实现的功能。

* 常见的第三方库有:ASIHTTPRequest, AFNetworking, MKNetworkKit.

* 关于第三方库基本使用,官网上都有详细的介绍。

* 今天就以ASIHTTPRequest为例,实现数据的本地缓存。

为什么使用本地缓存?

* 最通俗易懂的解释就是用户体验。

* 在没用网络的情况下,可以访问以前访问过得数据。

* 访问的数据,如果缓存中有数据,不用向服务器发送请求,可以节省用户的流量。

ASIHTTPRequest缓存机制

这幅图中的信息是通过网络请求获取的,如果在下次打开这个APP的时候没用网络,我们还想将上面的数据显示出来,就是得使用缓存机制,缓存机制是怎么实现的呢?

缓存的基本原理:

* 建立一个缓存区域,设置缓存路径,设置缓存策略。

* 在网络请求的时候设置为下载缓存。缓存的数据会存储到指定位置,我们可以根据缓存策略读取缓存数据。

注意:

  • 在使用ASIHTTPRequest的时候,我们首先要将这个第三方类库添加到我们的项目中。
  • 我们要将相应的框架添加到文件中
  • 这个类库,不支持ARC,如果你在ARC下,需要设置相关信息。打开:target-》Build Phases=>Compile Sources. 双击对应的 .m文件。在弹出的框中输入-fno-objc-arc.

下面的代码大概意思是:

建立缓存类;设置缓存路径;设置缓存策略(后面详述);将缓存类赋给一个属性;

ASIDownloadCache *cache = [[ASIDownloadCache alloc]init];
NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"CacheFiled"];
[cache setStoragePath:filePath];
[cache setDefaultCachePolicy:ASIAskServerIfModifiedCachePolicy |ASIFallbackToCacheIfLoadFailsCachePolicy];
[self setMyCache:cache];

下一步我们就可以发起请求了:

请求路径;请求的数据设置缓存;存储策略(后面讲述);发起请求;获取请求的数据;

NSURL *url = [NSURL URLWithString:@"http://apis.juhe.cn/cook/query?key=c84890ed990675f3c454cb2e86fc0a75&menu=%E8%A5%BF%E7%BA%A2%E6%9F%BF&rn=10&pn=3"];
ASIHTTPRequest *request = [[ASIHTTPRequest alloc]initWithURL:url];
[request setDownloadCache:[self myCache]];
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
[request startSynchronous];
NSData *data = request.responseData;

缓存策略和存储策略

缓存策略,存储策略,见名知意,就是缓存是采取的策略和存储是采取的策略。

比如使用缓存的时候,是先读取缓存,还是先请求网路,还是网络读取失败后读取缓存。

存储策略是采取临时性存储,还是永久性存储。

下面的这张图记录了ASI的缓存策略,多种缓存策略可以配合使用,例如上面的代码的缓存策略就是配合着使用的,先向服务器请求数据,失败后加载本地缓存。

关于存储策略:大概分为两种

iOS-ASIHTTPRequest缓存机制的更多相关文章

  1. iOS网络缓存机制

    iOS的网络引擎自带缓存机制: 网络请求在经过网络引擎时有过处理(添加了字段),所以用api的网络请求无法获取缓存. [NSURLCache sharedURLCache]

  2. IOS开发缓存机制之—本地缓存机制

    功能需求 这个缓存机制满足下面这些功能. 1.可以将数据缓存到本地磁盘. 2.可以判断一个资源是否已经被缓存.如果已经被缓存,在请求相同的资源,先到本地磁盘搜索. 3.可以判断文件缓存什么时候过期.这 ...

  3. 关于iOS URL缓存机制原理解析

    关于URL缓存机制中   利用request对象判断是否缓存   其实request是否相等的判断依据是URLString是否相等

  4. iOS笔记-(缓存机制的理解与实现)

    (1)运行中的现象: 在iOS开发中,会遇到:同一NSURL被多次请求,会造成用户的流量浪费,程序的响应速度不够快.比如说,从服务器上请求一张图片,请求100次,下载的结果都是一样的. (2)解决方法 ...

  5. IOS缓存机制详解

    资料均来自互联网,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 人魔七七:http://www.cnblogs.com/qiqibo/ 为什么要有缓存 应用需要 ...

  6. 【转】IOS缓存机制详解

    人魔七七:http://www.cnblogs.com/qiqibo/ 为什么要有缓存 应用需要离线工作的主要原因就是改善应用所表现出的性能.将应用内容缓存起来就可以支持离线.我们可以用两种不同的缓存 ...

  7. IOS - 开发之内存缓存机制

    使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行.有时候我们需要将远程web服务器获取的数据缓存起来,减少对同一个url多次请求. 内存缓存我们可以使用sdk中的NSURLC ...

  8. iOS开发之内存缓存机制

    使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行.有时候我们需要将远程web服务器获取的数据缓存起来,减少对同一个url多次请求. 内存缓存我们可以使用sdk中的NSURLC ...

  9. 详解iOS多图下载的缓存机制

    1. 需求点是什么? 这里所说的多图下载,就是要在tableview的每一个cell里显示一张图片,而且这些图片都需要从网上下载. 2. 容易遇到的问题 如果不知道或不使用异步操作和缓存机制,那么写出 ...

随机推荐

  1. Set、Map及数组去重

    https://cloud.tencent.com/developer/article/1437254 https://blog.csdn.net/weixin_34247299/article/de ...

  2. 在axios中使用async await

    最近在做树鱼的项目, 联想到 如果用 async await 怎么处理, export async function Test1() { return new Promise((resolve) =& ...

  3. SC || Chapter 3

    ┉┉∞ ∞┉┉┉┉∞ ∞┉┉┉∞ ∞┉┉ 基本数据类型 && 对象数据类型 基本数据类型(int char long) 在栈中分配内存,不可变 对象数据类型(String BigInt ...

  4. 《剑指offer》39题—数组中出现次数超过一半的数字

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  5. vue中文本域限制字数的方法

    用watch方法,来限制字数 <template> <div class="box"> <textarea v-model="title&q ...

  6. Codevs3324 新斯诺克

    题目描述 Description 斯诺克又称英式台球,是一种流行的台球运动.在球桌上,台面四角以及两长边中心位置各有一个球洞,使用的球分别为1 个白球,15 个红球和6 个彩球(黄.绿.棕.蓝.粉红. ...

  7. C++ 学习笔记(三)string 类

    在C语言中如果想要使用字符串那么有两种方法: 1.定义char型数组:char[10]; 然后将每个字符填充到对应的位置. 优点:这种方式将字符串放在内存所以每个位置都可以修改. 缺点:赋值比较麻烦, ...

  8. Re:从零开始的Linux之路(目录配置)

    基于 Red Hat Enterprise Linux 7.5 或者 CentOS 7.4 FHS协议(Filesystem Hierarchy Standard)——文件系统层次化标准 该标准定义了 ...

  9. Eclipse上进行java web项目的打包

    以下是一个基于maven搭建的Spring Boot项目的目录结构 版权声明:本文为博主原创文章,未经博主允许不得转载. 原文地址: https://www.cnblogs.com/poterliu/ ...

  10. windows 2008r2+php5.6.28环境搭建详细过程

    安装IIS7 安装php 网站验证 安装IIS7 1.打开服务器管理器(开始-计算机-右键-管理-也可以打开),添加角色 直接下一步 勾选Web服务器(IIS),下一步,有个注意事项继续下一步(这里我 ...