NSURLCache不会在iOS8中清除存储的响应

以下是我需要清除caching并调用URL的示例函数

- (void)clearDataFromNSURLCache:(NSString *)urlString { NSURL *requestUrl = [NSURL URLWithString:urlString]; NSURLRequest *dataUrlRequest = [NSURLRequest requestWithURL: requestUrl]; NSURLCache * cache =[NSURLCache sharedURLCache]; NSCachedURLResponse* cacheResponse =[cache cachedResponseForRequest:dataUrlRequest]; if (cacheResponse) { NSString* dataStr = [NSString stringWithUTF8String:[[cacheResponse data] bytes]]; NSLog(@"data str r= %@",dataStr); NSLog(@"url str r= %@",[[[cacheResponse response] URL] absoluteString]); [cache storeCachedResponse:nil forRequest:dataUrlRequest]; [NSURLCache setSharedURLCache:cache]; } [[NSURLCache sharedURLCache] removeCachedResponseForRequest:dataUrlRequest]; //Check if the respnase data has been removed/deleted from cache NSURLRequest *finalRequestUrlRequest = [NSURLRequest requestWithURL:requestUrl]; NSURLCache * finalCache =[NSURLCache sharedURLCache]; NSCachedURLResponse* finalcacheResponse =[finalCache cachedResponseForRequest:finalRequestUrlRequest]; if (finalcacheResponse) { //Should not enter here NSString* finaldataStr = [NSString stringWithUTF8String:[[finalcacheResponse data] bytes]]; NSLog(@"data str r= %@",finaldataStr); NSLog(@"url str r= %@",[[[cacheResponse response] URL] absoluteString]); } } 

在iOS 6/7中,对于requestURL,响应被成功删除,但在iOS 8中,它永远不会被删除。 我已经search,但无法find为什么这不应该在iOS8的工作原因。

任何帮助将不胜感激…..

NSURLCache在iOS 8.0.x上破坏 – 它永远不会清除caching,所以它的增长没有限制。 请参阅http://blog.airsource.co.uk/2014/10/11/nsurlcache-ios8-broken/进行详细调查。 caching清除固定在8.1 beta – 但removeCachedResponseForRequest: 不是

removeCachedResponsesSinceDate:看起来可以在iOS 8.0上工作 – 这是一个为8.0添加的API,但尚未将其添加到文档(它在API差异中)。 我不清楚它是什么对任何人来说 – 当然你想要做的是特定的date之前删除caching的响应。

removeAllCachedResponses适用 – 但这是一个真正的大锤解决scheme。

我得到了一个足够的结果,重置一个特定的URL的caching响应,将caching控件更改为永远不会返回的东西,如标题中的“max-age = 0”。 看这里