在NSURLSession for iOS Simulator

时间:2016-11-18 17:25:49

标签: ios objective-c iphone caching ios-simulator

我试图通过使用这些问题的方法来找到一种方法来阻止NSURLSession缓存响应(在模拟器中):

Prevent NSURLSession from caching responses

NSURLCache does not clear stored responses in iOS8

我不想使用这个问题的方法:

Clear NSURLSession Cache

在设置新的ephemeralSessionConfiguration实例时使用NSURLSessionConfigurationNSURLSession调用。

我只是想不缓存请求,最坏的情况是在应用程序重新激活时清除缓存。 在应用委托中执行[NSURLCache sharedURLCache] removeAllCachedResponses]时调用applicationWillResignActive,我仍然会在磁盘上的相应iOS模拟器缓存中显示Cache.db并且存在完整的缓存响应/请求。

在此之前,我将所有NSURLSessionConfiguration缓存政策更改为NSURLRequestReloadIgnoringCacheData NSURLRequestReloadIgnoringLocalCacheData NSURLRequestReloadIgnoringLocalAndRemoteCacheData (测试了所有三种情况,最后一种情况可能没有实现)实例(以及有效的所有缓存策略)。是不是更改了缓存策略,导致不在缓存服务器响应和模拟器上的请求?它取决于响应标头中的存储策略吗?

我使用适用于iPhone的iOS 9.3和iOS 10.1模拟器以及适用于iOS SDK的第10版。项目是在Objective C中,也许完整的Swift项目表现不同? 这种行为对于模拟器和设备是不同的吗?为什么会发生这种情况,是否存在与使用依赖关系不同的解决方案(由于某种原因,现在无法解决问题)。

2 个答案:

答案 0 :(得分:2)

我有类似的问题,我可以通过将 NSURLSessionConfiguration 上的属性 - URLCache requestCachePolicy 设置为来解决此问题。分别为 NSURLRequestReloadIgnoringCacheData

此外,您可以尝试将 NSMutableURLRequest 上的 cachePolicy 属性设置为 NSURLRequestReloadIgnoringCacheData

答案 1 :(得分:0)

所以粗鲁的解决方案是......放弃app.dign上的Cache.db文件。我假设在模拟器上你应该能够?!

但是,你试过ephemeralSessionConfiguration吗?因为Apples标题文档说:  *短暂的会话没有用于cookie的持久性磁盘存储,  *缓存或凭证。