【问题标题】:iOS - How does caching work?iOS - 缓存如何工作?
【发布时间】:2016-02-15 18:13:40
【问题描述】:

我正在开发一个表示来自 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()
        }
    } 
 }
}

我从AppleNSHipster 读到了有关NSURLCache 的信息。

如果 NSURLCache 可以做我想做的事情,这仍然令人困惑。例如,如何在没有真正下载任何内容的情况下检查是否有更新版本的数据?

如果 NSURLCache 无法处理检查,我该如何自己编写代码?

感谢您的建议!

【问题讨论】:

    标签: ios swift caching nsurlcache


    【解决方案1】:

    缓存的行为方式主要取决于您和您的服务器。 NSURLCache 不会自行做出决定,除了在超出其容量限制时可能会做什么。

    当您发出请求时,If-Modified-Since 等标头将通过比较缓存数据的时间戳来确定是否传输数据。

    Cache-Control 等基于服务器的标头也会影响数据在缓存中保持有效的时间。

    总而言之,NSURLCache 可以处理您需要的内容,但实现将基于NSURLCache 的配置、您如何发出请求、如何在响应中实现缓存控制以及您是否覆盖给定策略的组合通过标题。

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 2014-10-06
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 2016-09-08
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多