我正在使用AFNetworking来获取这样的JSON数据,这很好。如何清除AFNetworking中的旧缓存?
SessionManager *sessionManager = [SessionManager sharedClient];
[sessionManager setResponseSerializer:[AFJSONResponseSerializer serializer]];
[sessionManager setRequestSerializer:[AFJSONRequestSerializer serializer]];
[sessionManager GET:urlString
parameters:nil
success:^(NSURLSessionDataTask *task, id responseObject) {
self.navigationItem.titleView = nil;
self.data = [responseObject objectForKey:@"courses"];
self.title = responseObject[@"meta"][@"ref_title"];
[self.tableView reloadData];
}
failure:^(NSURLSessionDataTask *task, NSError *error) {
NSString *errorString = [NSString stringWithFormat:@"%@",
[error localizedDescription]];
[aiView stopAnimating];
}];
问题是我不想每次都加载数据。 所以我用
sessionManager.requestSerializer.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
这允许更快的用户体验,但现在的问题是,数据永远不会被删除,或者是什么呢?所以用户可能没有意识到有更新的数据可用。
为此,我此刻的NSTimer,当应用程序被加载其开始使用,然后调用
[[NSURLCache sharedURLCache] removeAllCachedResponses];
我觉得这是非常糟糕的溶液,作为计时器将调用,即使数据被加载5方法几秒钟前。所以我问有没有更好的?
我在这里看到了类似的问题,但它是关于清除图像缓存,并没有关于缓存的年龄。对我来说最好的例子是,如果缓存可能会在日期发生变化时被删除。
是的我也试过,它每次都从服务器重新加载。 – Pahnev 2014-09-05 00:02:40
要避免移除5秒钟前缓存的数据,可以使用:(void)removeCachedResponseForRequest:(NSURLRequest *)请求。如果是同一个请求,则可以有多次相同请求和备用实例。 – Kerstin 2014-09-05 00:30:39