我正在开发一个代表来自 Web API 的 JSON 的应用。
远程源一天更新几次。
我想做的就是:
// pseudo code
makeRequest() {
if (network not available){
if (cache not exists) {
showEmptyScreen()
}else if (cache exists){
useCache()
}
}else if (network available){
if (cache not exists) {
loadFromRemote()
}else if (cache exists){
if (cache is older than latest update) {
loadFromrRemote()
}else {
useCache()
}
}
}
}
我从 Apple 读到关于 NSURLCache
的内容来自NSHipster .
如果 NSURLCache 可以做我想做的事情,这仍然令人困惑。例如,如何在不真正下载任何东西的情况下检查是否有更新版本的数据?
如果 NSURLCache 无法处理检查,我怎么能自己编写代码呢?
感谢您的任何建议!
最佳答案
缓存的行为方式主要取决于您和您的服务器。 NSURLCache
不会自行做出决定,除非超出其容量限制时可能要做什么。
当您发出请求时,If-Modified-Since
等 header 将通过比较缓存数据的时间戳来确定数据是否已传输。
Cache-Control
等基于服务器的 header 也会影响数据在缓存中保持有效的时间。
总而言之,NSURLCache
可以处理您需要的内容,但实现将基于 NSURLCache
的配置、您如何发出请求、如何缓存控制的组合在响应中实现以及您是否覆盖 header 给出的策略。
关于iOS - 缓存如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33705022/