从单个请求缓存多个资源

时间:2016-12-19 15:33:05

标签: siesta-swift

假设我正在请求/products.json,它返回带有X个产品的JSON数组。每个都在/product/[id].json处提供。是否有可能使siesta缓存信息而不是为每个产品提出请求?或者我是否必须将我的模型与其资源分开?

1 个答案:

答案 0 :(得分:1)

这里有一个简短的讨论:

https://github.com/bustoutsolutions/siesta/issues/156

由于Siesta目前存在,每个URL都是一个单独的资源,具有单独的缓存状态。但是,您可以手动将索引/列表/搜索资源中的更改传播到相应的资源,以获取其各自的结果:

childResource.addObserver(self)
parentResource.addObserver(owner: self) {
  if case .newData = $1 {
    childResource.invalidate()
    // Delayed refresh prevents redundant load if multiple
    // children trigger a refresh on the same parent
    DispatchQueue.main.async {
      childResource.loadIfNeeded()
    }
  }
}

Github发布讨论更多背景。