-1

我正在尝试使用 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];

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

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

非常感谢。

4

1 回答 1

0

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

您应该改用NSURLConnectionwhich 公开适当的缓存控件。

于 2013-07-14T20:24:09.490 回答