带有cachePolicy的NSURLRequest ReloadIgnoringCacheData返回陈旧数据



我有一个用例,需要在Apple TV上轮询一个rest api进行身份验证。我得到了90-120秒的过时响应JSON响应,之后我得到了正确的JSON响应。下面是我的代码

static func getFileNoCache(url:NSURL?, completionHandler:(NSData?, String?)->Void) {
    if let fileUrl = url {
        let request = NSURLRequest(URL: fileUrl, cachePolicy: .ReloadIgnoringCacheData, timeoutInterval: 5)
        let dataTask = NSURLSession.sharedSession().dataTaskWithRequest(request,
            completionHandler: { data, response, error in
                if let err = error {
                    // failed !
                    print("!! Error - Download Failed nt(fileUrl) reason:(err.localizedDescription)")
                    completionHandler (nil, err.localizedDescription)
                    return
                }
                if let statusCode = (response as? NSHTTPURLResponse)?.statusCode {
                    if statusCode == 200 {
                        completionHandler(data, nil)
                    }
                    else {
                        completionHandler (nil, "Message")
                    }
                }
                else {
                    completionHandler (nil, "Invalid response")
                    print("!! Error - Downloading EPG Config")
                }
        })
        dataTask.resume()
    }
}

我真的不知道出了什么问题

可以是任意数量的东西,从代理到服务器端缓存,再到共享会话行为中的bug。

尝试使用您自己的会话配置完全禁用缓存,将其URLCache属性设置为nil,然后根据该配置创建会话。

如果这不起作用,那么缓存不在您的机器中,您最好的选择是在URL中添加一个缓存阻塞器(例如&ignoredParameter=monetically_increasing_number)。

相关内容

  • 没有找到相关文章

最新更新