NSURLCache没有被使用

时间:2013-07-13 12:00:37

标签: ios nsdata nsurlcache

我正在尝试使用NSURLCache,以便我的应用程序可以保存来自Web服务器的JSON响应,而不是请求它。

我已将Cache-Control:Max-Age=604800添加到请求中的响应标头中。

我在AppDelegate.m文件中添加了以下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    //set up the URL cache
    NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024
                                                         diskCapacity:20 * 1024 * 1024
                                                             diskPath:nil];
    [NSURLCache setSharedURLCache:URLCache];
}

我在代码中的请求看起来像这样:

NSString *myURLString = [NSString stringWithFormat:@"http://domain.com/api/?location=%@,%@&date=%@&method=%@", latitude, longitude, curDate, methodString];

NSLog(@"%@", myURLString);

NSURL *url = [NSURL URLWithString:myURLString];

NSData *jsonData = [NSData dataWithContentsOfURL:url];

我认为这不起作用,因为当使用仪器网络配置文件运行时,每次加载视图时我都会看到网络请求出现峰值,如果我加载应用程序然后将手机置于平面模式,则无数据加载(而我怀疑它会使用缓存)。

这证明没有制作/使用缓存吗?如果是这样,有没有人有任何想法为什么不呢?并且,如果它不是证明,有谁知道我如何更好地测试缓存?

非常感谢。

1 个答案:

答案 0 :(得分:0)

+[NSData dataWithContentsOfURL:]绝对不保证它将遵循什么样的缓存模型。在目前的实践中,它故意忽略任何缓存。

您应该使用NSURLConnection来公开正确的缓存控件。