NSURLRequest缓存问题iOS 7

时间:2013-09-20 18:40:01

标签: ios7 nsurlrequest nsurlrequestcachepolicy

iOS 7中的

cachePolicy不起作用,它只是缓存下载的json。

//URLRequest
        NSString *url = [NSString stringWithFormat:@"http://www.semhora.com/jsonparser/categories/categories_%d_test.json", _categoriesIndex];
        NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:url]
                                                  cachePolicy:NSURLCacheStorageNotAllowed
                                          timeoutInterval:60.0];

如何在iOS 7中禁止缓存?

3 个答案:

答案 0 :(得分:7)

我遇到了同样的问题,我确认设置cachePolicy = 0而不是cachePolicy = NSURLCacheStorageNotAllowed可以解决问题。

这对我来说没有意义,因为0对应NSURLCacheStorageAllowed 我们不能将其设置为0,因为Apple可能会在未来的版本中修复此问题 您可以尝试致电:

[NSURLCache sharedURLCache] removeCachedResponseForRequest:yourRequest]就在发起请求之前。

更新: 经过进一步研究后,我发现破坏的代码一直使用错误的枚举。查看NSURLRequest.h中的NSURLRequestCachePolicy。这就是你需要的那个,它解释了为什么设置为0为你解决问题。

答案 1 :(得分:6)

我刚刚使用过:

//URLRequest
        NSString *url = [NSString stringWithFormat:@"http://www.semhora.com/jsonparser/categories/categories_%d_test.json", _categoriesIndex];
        NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:url]
                                                  cachePolicy:0
                                          timeoutInterval:60.0];

现在它有效,从苹果开发论坛得到任何答案,直到现在它为什么会发生。

答案 2 :(得分:2)

缓存策略的正确枚举是:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:downloadURL cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];

如果您使用的是3G,某些提供商即使您在NSMutableURLRequest中禁用了缓存也会使用缓存,因此如果缓存策略不起作用,请将HTTP标头字段缓存控制设置为无缓存。

[request setValue:@"no-cache" forHTTPHeaderField:@"cache-control"];