即使在应用重新启动后 URLSession 也会缓存
Posted
技术标签:
【中文标题】即使在应用重新启动后 URLSession 也会缓存【英文标题】:URLSession caching even after app restart 【发布时间】:2018-08-02 15:57:50 【问题描述】:我刚刚遇到了一些事情,这完全改变了我对 ios 中 URLSession 缓存的印象。
我们击中了一个只会被击中一次的端点。
重新启动应用程序不会再次到达端点。
删除应用会导致它再次到达端点……但只有一次。
响应的头部包含...
Cache-Control public,max-age=1800
所以它归结为缓存。通过手动告诉 URLSession 忽略缓存,它会再次命中端点。
在文档中,它显示了缓存策略及其作为工作流程图的工作原理。
https://developer.apple.com/documentation/foundation/nsurlrequestcachepolicy/nsurlrequestuseprotocolcachepolicy
但是一旦应用程序终止,缓存的数据会存储在哪里?应用程序和与之相关的所有内容肯定会从内存中删除吗?
【问题讨论】:
【参考方案1】:URLSession 使用 URLCache 作为它的缓存系统。它用于所有网络资源。您可以直接访问它或通过 URLSessionConfiguration 设置您自己的。 URLCache 的底层位置在文件系统上,而不是在内存中。不过,有一种方法可以自己管理缓存。比如说,你的回复应该在设备上加密。稍微不好的例子,但你明白了。 ;)
如果您需要更多地控制缓存,这里有一篇文章如何manage cache programmatically。
【讨论】:
啊。我没有意识到它是基于磁盘的。这很有意义。谢谢☺️以上是关于即使在应用重新启动后 URLSession 也会缓存的主要内容,如果未能解决你的问题,请参考以下文章
即使在应用程序卸载后,Cordova LocalStorage 也会保留数据