大佬教程收集整理的这篇文章主要介绍了ios – 如何设置NSURLRequest缓存过期?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
NSMutableURLrequest *request = //obtain request; request.cachePolicy = NSURLrequestReturnCacheDataElseLoad;
如何设置到期日期:如果数据在超过n分钟前加载,请从服务器询问响应,而不是从磁盘?
想法是使用连接:willCacheResponse:方法.在缓存响应之前,它将被执行,在那里我们可以改变响应并返回新的,或返回nil,并且响应将不被缓存.当我使用AFNetworking,有一个很好的操作方法:
- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection,NSCachedURLResponse *cachedResponsE))block;
[operation setCacheResponseBlock:^NSCachedURLResponse *(NSURLConnection *connection,NSCachedURLResponse *cachedResponsE) { if([connection currentrequest].cachePolicy == NSURLrequestuseProtocolCachePolicy) { cachedResponse = [cachedResponse responseWithExpirationDuration:60]; } return cachedResponse; }];
其中responseWithExpirationDuration类别:
@interface NSCachedURLResponse (Expiration) -(NSCachedURLResponse*)responseWithExpirationDuration:(int)duration; @end @implementation NSCachedURLResponse (Expiration) -(NSCachedURLResponse*)responseWithExpirationDuration:(int)duration { NSCachedURLResponse* cachedResponse = self; NShttpURLResponse *httpResponse = (NShttpURLResponse*)[cachedResponse response]; NSDictionary *headers = [httpResponse allHeaderFields]; NSMutableDictionary* newHeaders = [headers mutableCopy]; newHeaders[@"Cache-Control"] = [NSString StringWithFormat:@"max-age=%i",duration]; [newHeaders removeObjectForKey:@"Expires"]; [newHeaders removeObjectForKey:@"s-maxage"]; NShttpURLResponse* newResponse = [[NShttpURLResponse alloc] initWithURL:httpResponse.URL statusCode:httpResponse.statusCode httpVersion:@"http/1.1" headerFields:newHeaders]; cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:newResponse data:[cachedResponse.data mutableCopy] userInfo:newHeaders storagePolicy:cachedResponse.storagePolicy]; return cachedResponse; } @end
所以,我们根据http/1.1在http header中设置以秒为单位的到期时间为此,我们需要设置一个标题:缓存控制:s-maxage或max-age然后创建新的缓存响应,因为属性是只读的,并返回新的对象.
以上是大佬教程为你收集整理的ios – 如何设置NSURLRequest缓存过期?全部内容,希望文章能够帮你解决ios – 如何设置NSURLRequest缓存过期?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。