URLCache.shared iOS 9 及以上的行为

URLCache.shared behavior on iOS 9 and Above

根据 legacy docs,Apple 为 iOS 5 及更高版本上的所有应用程序 运行 提供了默认 NSURLCache 实现。

Applications that do not have special caching requirements or constraints should find the default shared cache instance acceptable. An application with more specific needs can create a custom NSURLCache object and set it as the shared cache instance using setSharedURLCache:. The application should do so before any calls to this method.

然而,new API reference 并未在 URLCache.shared 的当前页面上指定此信息。

我的应用程序要求不缓存任何网络请求或响应。对于面向 iOS 9 及更高版本的应用程序,Apple 是否仍提供共享 NSURLCache?如果是这样,对于任何 NSURLSession 请求,我将如何完全禁用它、忽略它或将容量设置为 0?

除了 Apple 的新开发人员文档网站设法将可用性、可搜索性和可扫描性降至历史最低点外,该领域没有任何变化。但我敢肯定,您要查找的信息位于与您正在查看的子页面相链接的五十多个子页面之一。

当它只影响他们的 WWDC 网站时,已经够糟糕了。现在,糟糕的设计似乎已经转移了。很抱歉,它影响了你编写软件的能力,就像它影响了我一样。

一个字:回滚。随便说说。

但要回答您原来的问题,是的,仍然有一个共享缓存。实际上,他们无法在不影响兼容性的情况下删除它。

但是请注意,NSURLSession 请求不一定使用相同的缓存,具体取决于会话的配置方式。避免缓存的最简单方法仍然是使用 NSURLSession 并在配置中显式清除会话缓存。当然,这只会影响您通过该会话(而不是例如通过网络视图)发出的请求。