Uma*_*que 1 nsurlcache ios nscache nsurlsession swift
我正在使用以下代码通过URLConfiguration设置URLSession的缓存策略。
if appDelegateObj.configuration == nil {
appDelegateObj.configuration = URLSessionConfiguration.default
}
if self.apiType == ServerRequest.API_TYPES_NAME.API1 {
if appDelegateObj.forceReload == true {
appDelegateObj.configuration?.urlCache = nil
appDelegateObj.configuration?.requestCachePolicy = .reloadIgnoringLocalCacheData
}else{
appDelegateObj.configuration?.requestCachePolicy = .returnCacheDataElseLoad
}
}else{
appDelegateObj.configuration?.requestCachePolicy = .reloadIgnoringLocalCacheData
}
session = URLSession(configuration: appDelegateObj.configuration!, delegate: nil, delegateQueue: nil)
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,即使设置了
appDelegateObj.configuration?.urlCache = nil
Run Code Online (Sandbox Code Playgroud)
我能够获取新数据的唯一方法是通过使用
appDelegateObj.configuration?.requestCachePolicy = .reloadIgnoringLocalCacheData
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ?我需要一种方法来清除该应用程序的所有缓存数据。
我尝试使用
URLCache.shared.removeAllCachedResponses()
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。
几点:
简而言之,设置reloadIgnoringLocalCacheData是做自己正在做的事情的正确方法(嗯,真的,NSURLRequestReloadIgnoringLocalAndRemoteCacheData)。
但是,除非你想支持一些奇怪的离线模式下,你可能不希望被使用returnCacheDataElseLoad。该模式将忽略服务器提供的缓存过期,您几乎肯定不希望这样做。请改用默认策略(useProtocolCachePolicy)。
| 归档时间: |
|
| 查看次数: |
2090 次 |
| 最近记录: |