Ios 应该使用哪种缓存策略?
我的数据是从JSON API检索的,数据每天都会发生变化。目前,我正在使用Ios 应该使用哪种缓存策略?,ios,swift,nsurlrequestcachepolicy,Ios,Swift,Nsurlrequestcachepolicy,我的数据是从JSON API检索的,数据每天都会发生变化。目前,我正在使用reloadIgnoringLocalCacheDatanow,它忽略缓存数据并始终从原始源检索数据 我的问题是,我是否可以首先将缓存与原始缓存进行比较,如果它们不相等,则从服务器检索数据,否则使用缓存数据。或者为缓存设置过期时间,如何实现 private var session: URLSession = { let config = URLSessionConfiguration.default
reloadIgnoringLocalCacheData
now,它忽略缓存数据并始终从原始源检索数据
我的问题是,我是否可以首先将缓存与原始缓存进行比较,如果它们不相等,则从服务器检索数据,否则使用缓存数据。或者为缓存设置过期时间,如何实现
private var session: URLSession = {
let config = URLSessionConfiguration.default
config.urlCache = URLCache.shared
config.waitsForConnectivity = true
config.requestCachePolicy = .reloadIgnoringLocalCacheData
return URLSession(configuration: config, delegate: nil, delegateQueue: nil)
}()
JSON API应该设置HTTP到期头。使用CURL或Charles等检查返回的响应。如果未设置到期头,则可以通过跟踪和检查上次检索的时间来实现自己的到期。假设,根据您声明的规则,如果昨天检索到本地数据,则需要重新获取today@Dale,谢谢你的回复,我在Charles和API网站上查过了,回复中没有过期标题。那么我现在就可以定义我自己的到期规则了?但在这种情况下,我应该使用哪种缓存策略?
public enum CachePolicy : UInt {
case useProtocolCachePolicy
case reloadIgnoringLocalCacheData
case reloadIgnoringLocalAndRemoteCacheData
public static var reloadIgnoringCacheData: NSURLRequest.CachePolicy { get }
case returnCacheDataElseLoad
case returnCacheDataDontLoad
case reloadRevalidatingCacheData
}