【问题标题】:How to force NSURLCache to cache response even if it still has a valid cache?即使它仍然有有效的缓存,如何强制 NSURLCache 缓存响应?
【发布时间】:2014-08-14 18:22:21
【问题描述】:

我正在使用 NSURLCache (AFNetworking) 来缓存来自后端的响应,设置为 Cache-Control = max-age=3600, public。到目前为止,这工作正常。当用户打开应用程序并且数据不超过一小时时,它会从缓存中获取它。较旧时,它会从后端加载它。

我还有一个拉动刷新选项,它允许用户通过覆盖缓存从后端获取新数据,即使它仍然具有有效的缓存数据,这也可以正常工作。

我遇到的问题是,新检索的数据(通过覆盖缓存)没有被缓存。场景是这样的:

  1. 用户打开应用程序,时间戳为 x 的数据正在从后端以Cache-Control = max-age=3600, public 加载
  2. 用户研究数据 10 分钟。
  3. 用户现在手动刷新数据,并且带有时间戳 y 的新数据正在使用Cache-Control = max-age=3600, public 从后端提取
  4. 用户再研究新数据 10 分钟,然后关闭应用。
  5. 用户再次打开应用,但看到的是时间戳为 x 的数据,而不是时间戳为 y 的数据

在我看来,只要 NSURLCache 具有有效的缓存数据,它就不会缓存来自同一资源的数据,即使同时来自同一资源的新数据也进来了。有谁知道如何告诉 NSURLCache 缓存最近检索到的数据,即使它仍然有有效数据?或者它只是按设计工作?非常感谢任何帮助。

【问题讨论】:

    标签: ios objective-c cocoa-touch caching nsurlcache


    【解决方案1】:

    您没有编写用于手动刷新的代码。我猜你已经使用了NSURLRequestReloadIgnoringCacheData 策略。我没有测试是否将更新的响应存储在缓存中。但是,如果它不存储它,我会使用 removeCachedResponseForRequest: on shared NSURLCache 然后像往常一样加载数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-05
      • 2016-12-08
      • 2021-10-20
      • 2021-11-17
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      相关资源
      最近更新 更多