iOS 应用程序删除并重新安装后网络缓存是否保留

is network cache stays after iOS application is removed and reinstall

我有一个 iOS 应用程序,它使用带有默认缓存策略的 URLRequest 来获取网络资源。我想知道是否:

  1. 当应用程序从我的设备中删除时,所有缓存的响应是否也被删除?或者他们留在设备的某个地方? (直到它们过期)
  2. 如果是,如果我在该设备上再次安装该应用程序,当我启动该应用程序时,它将获取存储在 iOS 设备中的缓存响应,而不是从 back-end 中获取原始资源(如果回答仍然有效,当然)?

以下是 Apple 解释的默认缓存策略的行为:

谢谢。

缓存存储在应用程序容器目录中的文件中(具体来说,iOS 中的 Caches/BUNDLE_ID/Cache.db 或 macOS、IIRC 中的 Library/Caches/BUNDLE_ID/Cache.db)。当应用程序消失时,缓存也会消失,据我所知,它们永远不会存储在 iCloud 备份或任何东西中,所以它们应该不可能重新出现。

但请注意其他东西可以缓存响应(例如本地网络上的代理服务器),因此如果您的目标是完全消除任何获得过时响应的可能性,您应该明确禁用请求的缓存。

如果您的目标是拥有一个预热缓存,您可以在您的应用程序包中分发一个缓存文件,并在启用磁盘缓存之前在首次启动时制作一个副本,但您最好下载一个 ZIP 存档如果你想做任何一种离线模式,而不是试图让 NSURLCache 屈服于你的意愿,你自己管理磁盘上的文件。