Tại sao bộ nhớ cache phản hồi. Nó trả về các câu trả lời được tìm nạp trước đó. Nó thậm chí hoạt động nếu tắt kết nối mạng. Đặt lại trình mô phỏng iOS dường như không hoạt động. Thực hiện một yêu cầu, sau đó một lần nữa với internet offline không hoạt động (lưu trữ).Ngăn NSURLSession phản hồi bộ nhớ đệm
public let urlSession: NSURLSession
public init()
{
// ...
var configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.requestCachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
urlSession = NSURLSession(configuration: configuration)
}
func makeRequest(path: String, httpMethod:String, body:String?, baseUrl: String?, headers:[String:String]=[:], callback: JsonRequestCallback)
{
let urlString = (baseUrl ?? customOAuth2Manager.API_URL) + path
let url = NSURL(string: urlString)
let request = oauthInstance.request(forURL: url!)
request.HTTPMethod = httpMethod
self.customOAuth2Manager.setupRequest(request)
for (key, value) in headers {
request.setValue(value, forHTTPHeaderField:key)
}
if let body = body where body != "" {
let postData = (body as NSString).dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody = postData
}
let task = urlSession.dataTaskWithRequest(request) { data, response, error in
self.parseData(data, response:response, error:error, body:body, callback: callback)
}
task.resume()
}
Cập nhật
tôi quản lý để giải quyết nó bằng cách gọi mã này từ didFinishLaunching
trong AppDelegate
:
func removeUrlCache()
{
NSURLCache.setSharedURLCache(NSURLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil))
}
Tuy nhiên, tôi vẫn tò mò tại sao mã ban đầu của tôi không hoạt động . Nó cũng cảm thấy một chút xấu xí để vô hiệu hóa bộ nhớ cache cho tất cả các ứng dụng để giải quyết vấn đề của tôi.
Cảm ơn !! Bạn có khám phá thêm về điều này không? –
thêm 'configuration.URLCache' vào' nil' khi bạn tạo đối tượng 'NSURLSessionConfiguration' và phản hồi sẽ không được lưu trong bộ nhớ cache. – execv