删除并重新安装iOS应用程序后,网络缓存仍然存在

时间:2018-06-22 10:06:15

标签: ios caching networking urlrequest nsurlrequestcachepolicy

我有一个iOS应用程序,该应用程序通过将URLRequest与默认cachePolicy一起使用来获取网络资源。我想知道是否:

  1. 从我的设备中删除该应用程序后,是否也删除了所有缓存的响应?还是它们留在设备中的某个位置? (直到它们过期)
  2. 如果是,如果我再次在该设备上安装该应用程序,则在启动该应用程序时,它将获得存储在iOS设备中的缓存响应,而不是从后端获取原始资源(如果响应仍然有效,则为课程)?

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

谢谢。

enter image description here

1 个答案:

答案 0 :(得分:2)

这些缓存存储在应用程序容器目录中的文件中(在iOS中,具体为Caches/BUNDLE_ID/Cache.db;在macOS,IIRC中,具体为Library/Caches/BUNDLE_ID/Cache.db)。当应用程序消失时,缓存也会消失,据我所知,它们永远不会存储在iCloud备份或任何内容中,因此,它们应该不会重新出现。

但是请注意,其他事物也可以缓存响应(例如,本地网络上的代理服务器),因此,如果您的目标是完全消除获得陈旧响应的任何可能性,则应显式禁用对请求的缓存。

如果您的目标是拥有预热的缓存,则可以在应用捆绑包中分发缓存文件,并在首次启动前对其进行复制,然后再启用磁盘缓存,但是最好下载ZIP存档并进行管理如果您尝试执行任何离线模式,而不是随心所欲地将NSURLCache更改为磁盘上的文件,那么您自己可以将文件保存在磁盘上。