防止在 iOS 模拟器的 NSURLSession 中缓存

Prevent caching in NSURLSession for iOS Simulator

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

Prevent NSURLSession from caching responses

NSURLCache does not clear stored responses in iOS8

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

在设置新的 NSURLSession 实例时使用 ephemeralSessionConfiguration 调用 NSURLSessionConfiguration

我只想不缓存请求,在最坏的情况下,当应用程序退出活动时清除缓存。 在 applicationWillResignActive 中调用 [NSURLCache sharedURLCache] removeAllCachedResponses] 在应用程序委托中执行我仍然得到 Cache.db 存在并且在磁盘上的相应 iOS 模拟器缓存中充满缓存 responses/requests。

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

我正在为 iOS SDK 的 iPhone 和 v.10 使用 iOS 9.3 和 iOS 10.1 模拟器。项目在 Objective C 中,也许完整的 Swift 项目会有不同的表现? 模拟器和设备的这种行为是否不同?为什么会发生这种情况,是否有不同于使用依赖项的解决方案(由于某种原因现在不能落入其中)。

所以粗鲁的解决方案是...在应用程序辞职时删除 Cache.db 文件。我假设在模拟器上你应该能够?!

但是,您尝试过 ephemeralSessionConfiguration 吗?因为 Apples header doc 说: * 临时会话没有用于 cookie 的永久磁盘存储, * 缓存或凭据。

我有一个类似的问题,我可以通过设置属性来解决这个问题- URLCacherequestCachePolicy on NSURLSessionConfiguration 分别为 nilNSURLRequestReloadIgnoringCacheData

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