我正在尝试使用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];
我认为这不起作用,因为当使用仪器网络配置文件运行时,每次加载视图时我都会看到网络请求出现峰值,如果我加载应用程序然后将手机置于平面模式,则无数据加载(而我怀疑它会使用缓存)。
这证明没有制作/使用缓存吗?如果是这样,有没有人有任何想法为什么不呢?并且,如果它不是证明,有谁知道我如何更好地测试缓存?
非常感谢。
答案 0 :(得分:0)
+[NSData dataWithContentsOfURL:]
绝对不保证它将遵循什么样的缓存模型。在目前的实践中,它故意忽略任何缓存。
您应该使用NSURLConnection
来公开正确的缓存控件。