3 回答
TA贡献1851条经验 获得超5个赞
通常,更容易创建这样的请求
NSURLRequest *request = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:60.0];
然后创建连接
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request
delegate:self];
并在委托上实现连接:willCacheResponse:方法。刚刚返回nil应该这样做。
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse {
return nil;
}
TA贡献1836条经验 获得超4个赞
如果你正在使用NSURLSession,另一个防止Cache.db在app的Caches目录中创建写入iOS的请求和参数的解决方案是将会话NSURLCache的配置设置为0大小的内存和0大小的磁盘缓存,例如
let configuration = URLSessionConfiguration.default
configuration.urlCache = URLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
let session = URLSession(configuration: configuration)
或者如上所述设置在全局缓存级别
URLCache.shared = URLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
据推测,磁盘大小为0会阻止iOS写入磁盘,但如果你有策略,reloadIgnoringLocalCacheData那么你可能对内存缓存也不感兴趣。
注意这将阻止任何Caches/Cache.db(请求和响应)或Caches/fsCachedData/文件夹(响应数据)的创建。我们决定出于安全目的在应用程序中采用这种方法,因为我们不希望我们的请求永远存储在磁盘缓存中。
如果有人知道有一种方法可以停止请求缓存,但保持从iOS URL加载机制缓存响应数据,我有兴趣知道。(根据我的判断,没有关于此的API或官方文档)
- 3 回答
- 0 关注
- 627 浏览
添加回答
举报