在我的iOS应用程序中,我使用NSURLSessionTask下载json数据到我的应用程序。我发现当我直接从浏览器调用url时,我得到了一个最新的json,当它从应用程序中被调用时,我得到了json的旧版本。
这是缓存造成的吗?如何告诉NSURLSessionTask不要使用缓存。
这是我使用的呼叫:
NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {谢谢!
发布于 2017-03-10 15:47:49
如果您读取@runmad中的链接,您可以在流程图中看到,如果文件的头部不变,则在设置cachePolicy时,它仍将使用缓存的版本。
在Swift3中,我不得不这样做才能让它发挥作用:
let config = URLSessionConfiguration.default
config.requestCachePolicy = .reloadIgnoringLocalCacheData
config.urlCache = nil
let session = URLSession(configuration: config)这得到了一个真正的非缓存版本的文件,这是我需要的带宽估算计算。
发布于 2014-06-20 14:13:22
与使用sharedSession不同,您还可以使用指定默认缓存策略的NSURLSessionConfiguration创建自己的NSURLSessionConfiguration。因此,为会话定义一个属性:
@property (nonatomic, strong) NSURLSession *session;然后:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
self.session = [NSURLSession sessionWithConfiguration:configuration];然后使用该会话的请求将使用该requestCachePolicy。
发布于 2019-03-08 10:26:36
Swift 4& 5
我知道已经有一段时间了,但万一将来会有帮助的话。
您还可以使用.ephemeral配置属性URLSession,默认情况下它不保存任何cookie和缓存。
如文件所述,
临时会话配置对象类似于默认会话配置,但相应的会话对象不将缓存、凭据存储或任何与会话相关的数据存储到磁盘。相反,与会话相关的数据存储在RAM中。
因此,您的代码可能如下所示:
let configuration = URLSessionConfiguration.ephemeral
let session = URLSession(configuration: configuration)https://stackoverflow.com/questions/24328461
复制相似问题