1

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

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

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

谢谢。

在此处输入图像描述

4

1 回答 1

2

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

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

如果您的目标是预热缓存,您可以在应用程序包中分发一个缓存文件,并在启用磁盘缓存之前在首次启动时对其进行复制,但您最好下载 ZIP 存档并管理磁盘上的文件如果您尝试执行任何类型的离线模式,而不是尝试使 NSURLCache 屈服于您的意愿,请您自己做。

于 2018-06-25T02:03:46.187 回答