我正在使用AfNetworking,我打电话给新数据,但我一直收到缓存的结果。因此,如果我在一个显示数据的VC中,回弹到root并更改我服务器上的数据,然后等待30秒,当我推回VC时,我会看到旧数据。如果我在浏览器中点击URL,我会看到正确的数据。如果我重新运行应用程序,我将看到数据的更改。
我的服务器响应发送回缓存控制标头:Cache-Control:max-age = 10,public
据我所知,我总是得到一个NSCachedURLResponse,并且缓存没有监听我的缓存控制策略。
在我的AppDelegate中,我设置了SharedURLCache:
NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:8 * 1024 * 1024 diskCapacity:8 * 1024 * 1024 diskPath:nil];
[NSURLCache setSharedURLCache:URLCache];
我如何设置URLRequest:
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0];
我没有其他任何涉及NSURLCache的事情。
有什么想法吗?
BooRanger
答案 0 :(得分:0)
您描述的行为正是我对您发布的代码的期望。您是否尝试过使用NSURLRequestReloadIgnoringLocalAndRemoteCacheData
代替NSURLRequestUseProtocolCachePolicy
?根据{{3}} NSURLRequestUseProtocolCachePolicy
表示:
指定协议中定义的缓存逻辑 实现(如果有)用于特定的URL加载请求。 这是URL加载请求的默认策略。
因此,如果您希望始终从服务器加载,则应使用NSURLRequestReloadIgnoringLocalAndRemoteCacheData
,其描述如下:
指定不仅要忽略本地缓存数据,而且要忽略 应指示代理人和其他中间人忽视 他们的缓存只要协议允许。