0
是否有可能使用NSURLCache
缓存响应时的URL包括改变查询项目?例如,我们添加Mashery的需要“SIG = XXXXXX”的查询项目,改变为每个请求。NSURLCache不断变化的Mashery“SIG = XXXXXX”查询项目
如果没有,有没有解决办法?
是否有可能使用NSURLCache
缓存响应时的URL包括改变查询项目?例如,我们添加Mashery的需要“SIG = XXXXXX”的查询项目,改变为每个请求。NSURLCache不断变化的Mashery“SIG = XXXXXX”查询项目
如果没有,有没有解决办法?
通过继承NSURLCache
并重写它的高速缓存方法解决。
在每个被覆盖的方法,我从所述请求之前调用超类的方法除去查询项。
例如:
override func storeCachedResponse(cachedResponse: NSCachedURLResponse, forRequest request: NSURLRequest) {
let strippedRequest = removeQueryItemFromRequest(self.queryItemName, request: request)
if let url = strippedRequest.URL {
let response = NSURLResponse(URL: url, MIMEType: cachedResponse.response.MIMEType, expectedContentLength: Int(cachedResponse.response.expectedContentLength), textEncodingName: cachedResponse.response.textEncodingName)
let newCachedResponse = NSCachedURLResponse(response: response, data: cachedResponse.data)
super.storeCachedResponse(newCachedResponse, forRequest: strippedRequest)
}
else {
super.storeCachedResponse(cachedResponse, forRequest: request)
}
}
self.queryItemName
是存储的属性到自定义初始化通过。