我正在使用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