【问题标题】:AFNetworking disable cachingAFNetworking 禁用缓存
【发布时间】:2013-08-09 03:23:08
【问题描述】:

我正在尝试从服务器获取 JSON 文件,然后将其显示在表格中,这可以正常工作,但是,出于某种原因,AFNetworking 即使在应用重新启动后也会缓存 JSON 文件。 如何禁用此功能?

 NSURL *url = [NSURL URLWithString:@"http://?json"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    AFJSONRequestOperation *operation = [AFJSONRequestOperation
                                         JSONRequestOperationWithRequest:request
                                         success:^(NSURLRequest *request, NSHTTPURLResponse *response, id responseObject)
                                         {

                                             self.dataget = [responseObject objectForKey:@"data"];
                                             [self.tableView reloadData];


                                         }
                                         failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id responseObject)
                                         {

                                             [HUD hideUIBlockingIndicator];
                                         }];

    [operation start];

json 文件可能没有缓存在服务器端: Cache-Control: no-cache[CRLF]

【问题讨论】:

标签: ios objective-c afnetworking


【解决方案1】:

缓存行为可以在NSMutableURLRequest 对象上设置,setCachePolicy:。否则,内置共享 NSURLCache 将尊重服务器定义的缓存行为(我建议调整和利用这一点,而不是完全无视)。

【讨论】:

  • 愚蠢的我,我确实按照 NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 diskCapacity:20 * 1024 * 1024 diskPath:nil]; [NSURLCache setSharedURLCache:URLCache]; 的教程设置了一个 NSURLCache 从 AppDelegate 中删除,现在可以正常工作了。
  • 我在以下博客文章中介绍了此信息及更多信息:blog.originate.com/blog/2014/02/20/afimagecache-vs-nsurlcache
【解决方案2】:

AFNetworking 不做任何缓存。此外,“Cache-Control”HTTP 标头告诉客户端不要缓存页面(即 AFNetworking),而不是服务器。

听起来您的服务器正在缓存 JSON 页面。

【讨论】:

  • 但是,如果是这种情况,为什么我的浏览器会显示最新版本的 JSON 而应用却没有?
  • 嗯,很有趣。 AFNetworking 使用内置的 NSURLCache,所以我错了。如果您通过 iOS 设备/模拟器上的浏览器访问该页面,您会得到什么?设备是否配置为以与浏览器相同的方式访问服务器(即两者之间没有代理)?
【解决方案3】:

AFNetworking 不缓存任何内容。您可能应该检查响应的缓存控制标头。如果我没有错,那么您的服务器正在发送一些 NSUrlConnection 正在考虑的缓存控制标头。我建议您在向服务器发出请求之前将 NSURLRequest 的缓存策略设置为 NSURLRequestReloadIgnoringLocalCacheData

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 2015-10-27
    • 2013-12-08
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多