我使用NSURLCache(AFNetworking)缓存来自后端的响应,设置Cache-Control = max-age=3600, public
。到目前为止这个工作正常。当用户打开应用程序且数据不超过一小时时,它将从缓存中获取该数据。较旧时,它会从后端加载它。
我还有一个pull to refresh选项,允许用户通过覆盖缓存从后端获取新数据,即使它仍然有有效的缓存数据,也可以正常工作。
我遇到的问题是,新检索的数据(通过覆盖缓存)不会被缓存。场景是这样的:
Cache-Control = max-age=3600, public
Cache-Control = max-age=3600, public
在我看来,NSURLCache只是缓存来自同一资源的数据,只要它具有有效的缓存数据,即使同时来自同一资源的新数据也是如此。有没有人知道如何告诉NSURLCache缓存最新检索的数据,即使它仍然有有效数据?或者它只是按设计工作?任何帮助都非常感谢。
答案 0 :(得分:0)
您没有编写用于手动刷新的代码。我猜您使用了NSURLRequestReloadIgnoringCacheData
政策。我没有测试是否将更新的响应存储在缓存中。但是,如果它不存储它,我会使用
共享removeCachedResponseForRequest:
上的NSURLCache
,然后照常加载数据。