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.
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)") }