How to clear cached data stored by URLSession/URLConfiguration?

我是研究僧i 提交于 2019-12-11 05:13:55

问题


I am using the code below to set the caching policy of my URLSession via URLConfiguration.

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)

The problem I am having is that I am getting the cached response back even after setting the

appDelegateObj.configuration?.urlCache = nil

The only way I am able to get fresh data is via using

appDelegateObj.configuration?.requestCachePolicy = .reloadIgnoringLocalCacheData

What am I doing wrong ? I need a way to clear all the cached data for the app.

I have tried using

URLCache.shared.removeAllCachedResponses()

but that too isn't working.


回答1:


Several points:

  • Setting the URL cache to nil does not disable all caching. A user can still get cached data from proxies.
  • Clearing the cache is not guaranteed to be instant. IIRC, it lags by several seconds.
  • Even if it were instant, the user could still get cached data from proxies.

In short, setting reloadIgnoringLocalCacheData is the correct way to do what you're doing (well, really, NSURLRequestReloadIgnoringLocalAndRemoteCacheData).

However, unless you're trying to support some weird offline mode, you probably do not want to be using returnCacheDataElseLoad. That mode ignores the cache expiration provided by the server, which you almost certainly do not want to do. Use the default policy (useProtocolCachePolicy) instead.



来源:https://stackoverflow.com/questions/44602977/how-to-clear-cached-data-stored-by-urlsession-urlconfiguration

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!