How to disable caching in Alamofire How to disable caching in Alamofire ios ios

How to disable caching in Alamofire


You have a few options.

Disabling the URLCache Completely

let manager: Manager = {    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()    configuration.URLCache = nil    return Manager(configuration: configuration)}()

Configuring the Request Cache Policy

let manager: Manager = {    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()    configuration.requestCachePolicy = .ReloadIgnoringLocalCacheData    return Manager(configuration: configuration)}()

Both approaches should do the trick for you. For more information, I'd suggest reading through the documentation for NSURLSessionConfiguration and NSURLCache. Another great reference is NSHipster article on NSURLCache.


This is what worked for me.

NSURLCache.sharedURLCache().removeAllCachedResponses()

Swift 3

URLCache.shared.removeAllCachedResponses()


swift 3, alamofire 4

My solution was:

creating extension for Alamofire:

extension Alamofire.SessionManager{    @discardableResult    open func requestWithoutCache(        _ url: URLConvertible,        method: HTTPMethod = .get,        parameters: Parameters? = nil,        encoding: ParameterEncoding = URLEncoding.default,        headers: HTTPHeaders? = nil)// also you can add URLRequest.CachePolicy here as parameter        -> DataRequest    {        do {            var urlRequest = try URLRequest(url: url, method: method, headers: headers)            urlRequest.cachePolicy = .reloadIgnoringCacheData // <<== Cache disabled            let encodedURLRequest = try encoding.encode(urlRequest, with: parameters)            return request(encodedURLRequest)        } catch {            // TODO: find a better way to handle error            print(error)            return request(URLRequest(url: URL(string: "http://example.com/wrong_request")!))        }    }}

and using it:

Alamofire.SessionManager.default            .requestWithoutCache("https://google.com/").response { response in                print("Request: \(response.request)")                print("Response: \(response.response)")                print("Error: \(response.error)")        }