我试图通过使用这些问题的方法来找到一种方法来阻止NSURLSession
缓存响应(在模拟器中):
Prevent NSURLSession from caching responses
NSURLCache does not clear stored responses in iOS8
我不想使用这个问题的方法:
在设置新的ephemeralSessionConfiguration
实例时使用NSURLSessionConfiguration
来NSURLSession
调用。
我只是想不缓存请求,最坏的情况是在应用程序重新激活时清除缓存。
在应用委托中执行[NSURLCache sharedURLCache] removeAllCachedResponses]
时调用applicationWillResignActive
,我仍然会在磁盘上的相应iOS模拟器缓存中显示Cache.db
并且存在完整的缓存响应/请求。
在此之前,我将所有NSURLSessionConfiguration
缓存政策更改为NSURLRequestReloadIgnoringCacheData
NSURLRequestReloadIgnoringLocalCacheData
NSURLRequestReloadIgnoringLocalAndRemoteCacheData
(测试了所有三种情况,最后一种情况可能没有实现)实例(以及有效的所有缓存策略)。是不是更改了缓存策略,导致不在缓存服务器响应和模拟器上的请求?它取决于响应标头中的存储策略吗?
我使用适用于iPhone的iOS 9.3和iOS 10.1模拟器以及适用于iOS SDK的第10版。项目是在Objective C中,也许完整的Swift项目表现不同? 这种行为对于模拟器和设备是不同的吗?为什么会发生这种情况,是否存在与使用依赖关系不同的解决方案(由于某种原因,现在无法解决问题)。
答案 0 :(得分:2)
我有类似的问题,我可以通过将 NSURLSessionConfiguration 上的属性 - URLCache 和 requestCachePolicy 设置为来解决此问题。分别为和 NSURLRequestReloadIgnoringCacheData 。
此外,您可以尝试将 NSMutableURLRequest 上的 cachePolicy 属性设置为 NSURLRequestReloadIgnoringCacheData 。
答案 1 :(得分:0)
所以粗鲁的解决方案是......放弃app.dign上的Cache.db文件。我假设在模拟器上你应该能够?!
但是,你试过ephemeralSessionConfiguration
吗?因为Apples标题文档说:
*短暂的会话没有用于cookie的持久性磁盘存储,
*缓存或凭证。