iOS之NSURLCache、ASI设置缓存及使用步骤

  1 一NSURLCache
  2 缓存的使用步骤
  3 // 获得全局的缓存对象
  4 NSURLCache *cache = [NSURLCache sharedURLCache];
  5
  6 // 设置缓存容量
  7 cache.memoryCapacity = 1024 * 1024;
  8 cache.diskCapacity = 20 * 1024 * 1024;
  9
 10 // 设置请求的缓存策略
 11 request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
 12
 13 二、ASI
 14 1.缓存的使用步骤
 15 1> 缓存单个请求
 16 // 1.获得全局的缓存对象(决定缓存的存储路径, 存储到什么地方)
 17 ASIDownloadCache *cache = [ASIDownloadCache sharedCache];
 18 // 设置默认的缓存加载策略
 19 cache.defaultCachePolicy = ASIDoNotReadFromCacheCachePolicy;
 20
 21 // 2.设置请求对象的缓存对象(使用哪个缓存对象)
 22 request.downloadCache = cache;
 23
 24 // 3.设置请求对象的缓存加载策略
 25 request.cachePolicy = ASIOnlyLoadIfNotCachedCachePolicy;
 26 // 如果没有缓存, 才发送请求
 27
 28 // 4.设置请求对象的缓存存储策略(存储的时长)
 29 request.cacheStoragePolicy = ASICachePermanentlyCacheStoragePolicy;
 30 // 永久存储
 31
 32 注意, 缓存加载策略的优先级 : request.cachePolicy > cache.defaultCachePolicy
 33
 34 2> 缓存所有请求
 35 // 1.获得全局的缓存对象(决定缓存的存储路径, 存储到什么地方)
 36 ASIDownloadCache *cache = [ASIDownloadCache sharedCache];
 37 // 设置默认的缓存加载策略
 38 cache.defaultCachePolicy = ASIOnlyLoadIfNotCachedCachePolicy;
 39
 40 // 2.设置全局缓存对象
 41 [ASIHTTPRequest setDefaultCache:cache];
 42
 43 2.发送请求
 44 1> 同步请求
 45 [request startSynchronous];
 46
 47 2> 异步请求
 48 [request startAsynchronous];
 49
 50 3.GET\POST
 51 1> GET请求
 52 ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
 53
 54 2> POST请求
 55 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
 56 // 添加普通参数(非文件参数)
 57 [request setPostValue:@"zhangsan" forKey:@"username"];
 58 [request setPostValue:@"123" forKey:@"pwd"];
 59
 60 4.文件下载
 61 // 文件的存储路径(文件下载到什么地方)
 62 request.downloadDestinationPath = filepath;
 63 // 设置下载代理(监听下载进度)
 64 request.downloadProgressDelegate = self.circleView;
 65 // 支持断点下载
 66 request.allowResumeForFileDownloads = YES;
 67
 68 5.文件上传
 69 // 添加文件参数(file : 需要上传文件的路径)
 70 [request setFile:file forKey:@"file"];
 71 [request setFile:file withFileName:@"123.txt" andContentType:@"text/plain" forKey:@"file"];
 72 [request setData:data withFileName:@"minion.png" andContentType:@"image/png" forKey:@"file"];
 73
 74 // 设置上传代理(监听上传进度)
 75 request.uploadProgressDelegate = self.circleView;
 76
 77 6.监听请求的过程
 78 1> 代理方法
 79 // 设置代理
 80 request.delegate = self;
 81 // 遵守协议
 82 ASIHTTPRequestDelegate
 83 // 实现协议中的代理方法
 84 - (void)requestStarted:(ASIHTTPRequest *)request;
 85 - (void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data
 86 - (void)requestFinished:(ASIHTTPRequest *)request;
 87 - (void)requestFailed:(ASIHTTPRequest *)request;
 88
 89 2> SEL
 90 // 设置代理
 91 request.delegate = self;
 92 // 设置方法名
 93 [request setDidStartSelector:@selector(start)]; // 开始发送请求, 就会调用代理的start方法
 94 // ....
 95
 96 3> block
 97 [request setStartedBlock:^{
 98     NSLog(@"setStartedBlock ----");
 99 }];
100
101 [request setDataReceivedBlock:^(NSData *data) {
102     NSLog(@"setDataReceivedBlock ----");
103 }];
104
105 [request setCompletionBlock:^{
106     NSLog(@"setCompletionBlock ----");
107 }];
108
109 [self setFailedBlock:^{
110     NSLog(@"setFailedBlock ----");
111 }];
112
113 7.通过request对象获得服务器的响应
114 1> 获得响应头信息
115 @property (atomic, retain) NSDictionary *responseHeaders;
116
117 2> 获得响应体(实体内容)
118 - (NSData *)responseData; // 直接返回服务器的二进制数据
119 - (NSString *)responseString; // 将二进制数据转成字符串(方便调试)
时间: 2024-10-12 18:57:34

iOS之NSURLCache、ASI设置缓存及使用步骤的相关文章

iOS网络——NSURLCache设置网络请求缓存

今天在看HTTP协议,看到了response头中的cache-control,于是就深入的研究了一下.发现了iOS中一个一直被我忽略的类——NSURLCache类. NSURLCache NSURLCache用于缓存网络请求,也就是NSURLRequest,然后根据我们设置的NSURLCache策略进行相应的缓存. 首先介绍一下各种策略 策略 意义 UseProtocolCachePolicy  默认行为  ReloadIgnoringLocalCacheData  不使用缓存  ReloadI

iOS开发网络篇—数据缓存(使用NSURLCache)

一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造成以下问题 (1)用户流量的浪费 (2)程序响应速度不够快 解决上面的问题,一般考虑对数据进行缓存. 二.缓存 为了提高程序的响应速度,可以考虑使用缓存(内存缓存\硬盘缓存) 第一次请求数据时,内存缓存中没有数据,硬盘缓存中没有数据. 缓存数据的过程 当服务器返回数据时,需要做以下步骤 (1)使用服务器的数据(比如解析.显示) (

iOS开发网络篇—数据缓存

iOS开发网络篇—数据缓存 一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造成以下问题 (1)用户流量的浪费 (2)程序响应速度不够快 解决上面的问题,一般考虑对数据进行缓存. 二.缓存 为了提高程序的响应速度,可以考虑使用缓存(内存缓存\硬盘缓存) 第一次请求数据时,内存缓存中没有数据,硬盘缓存中没有数据. 缓存数据的过程 当服务器返回数据时,需要做以下步骤 (1)使用服务器

IOS键盘的相关设置(UITextfield)

http://blog.csdn.net/h3c4lenovo/article/details/8447661 一.键盘风格 UIKit框架支持8种风格键盘. typedef enum { UIKeyboardTypeDefault,                // 默认键盘:支持所有字符 UIKeyboardTypeASCIICapable,           // 支持ASCII的默认键盘 UIKeyboardTypeNumbersAndPunctuation,  // 标准电话键盘,

iOS开发之iOS7设置状态栏字体颜色

应用中登陆界面颜色较浅,状态栏字体颜色为黑色,跳转到主界面之后,界面颜色较深,状态栏颜色随之变成白色.但是再重新返回登陆界面后,状态栏字体颜色并没有改成黑色,特别别扭. plist文件里将View controller-based status bar appearance改为NO然后在view controller里边加上下边一句就可以了,这样状态栏是黑字 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyle

iOS教程:详解iOS多图下载的缓存机制

ios教程,ios的干货一直来不及给大家分享,小编也是一直在忙啊!今天给大家献上ios:详解iOS多图下载的缓存机制 1. 需求点是什么? 这里所说的多图下载,就是要在tableview的每一个cell里显示一张图片,而且这些图片都需要从网上下载. 2. 容易遇到的问题 如果不知道或不使用异步操作和缓存机制,那么写出来的代码很可能会是这样: cell.textLabel.text = app.name; cell.detailTextLabel.text = app.download;NSDat

iOS网络加载图片缓存策略之ASIDownloadCache缓存优化

在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用户体验,为了不是每次显示都需要从网上下载数据,希望将图片放到本地缓存,因此我们需要一个好的的缓存策略,今天我将我在项目工程中的实际经验分享给大家,我这里主要介绍一下强大的ASIHTTPRequest的缓存策略,以及使用方法. AD: 在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用户体验,为了不

iOS中arc的设置与使用

工程配置arc方案: 1,直接在targets->build phases中修改compiler Flags,是否支持arc.添加:-fobjc-arc,就可以让旧项目支持arc.如果想让原来支持arc的不使用arc则添加-fno-objc-arc iOS中arc的设置与使用

Ehcache(04)——设置缓存的大小

设置缓存的大小 目录 1     CacheManager级别 2     Cache级别 3     大小衡量 4     配置大小示例 缓存大小的限制可以设置在CacheManager上,也可以设置在单个的Cache上.我们可以设置缓存使用内存的大小,也可以设置缓存使用磁盘的大小,但是使用堆内存的大小是必须设置的,其它可设可不设,默认不设就是无限制.在设置缓存大小的时候,我们可以设置缓存使用某一个存储器的最大字节数,也可以设置缓存在某一个存储器上最多存放元素的数量. 1       Cach