首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当新数据可用时,如何防止使用缓存?

问当新数据可用时,如何防止使用缓存?
EN

Stack Overflow用户
提问于 2016-01-27 07:12:51
回答 2查看 153关注 0票数 0

我在我的应用程序中缓存CoreData中的数据,以便在没有新的情况下减少更新请求。

下面是伪代码中的缓存逻辑:

代码语言:javascript
复制
if cacheExistsInCoreData {
  if cacheIsOutdated  {
    loadDataFromRemoteAndCacheItWithCurrentDate()  
  }else {
    useCache()
}else {
  loadDataFromRemoteAndCacheItWithCurrentDate()
}

如何检查缓存是否过时:

代码语言:javascript
复制
func checkIfCacheIsOutdated {
  if lastCachedDate isOrderThan selfDefinedCheckingDate {
   return true // need to load new data
  }else {
   return false // just use cache
  }
}

这种机制几乎一直运作良好。

在罕见的情况下,我发现我的程序用正确的日期缓存错误的数据,这意味着用户可能会看到旧的数据,并且在新的数据可用时无法得到更新。

如果我的缓存逻辑没有什么问题,我想知道原因是否是当我的应用程序在更新之前获取远程数据,然后用最新的日期时间存储在核心数据中。

核心数据中的缓存包括:

数据(由远程服务器提供)//我无法用它做任何事. 日期(由我使用NSDate()提供)

在存储两个对象之前,如何确保它们正确连接(当前时间的最新数据)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-27 07:32:17

假设您正在调用web,大多数web将返回缓存头。根据缓存头值缓存数据是安全的,这样就不会有任何过时的缓存。

票数 0
EN

Stack Overflow用户

发布于 2016-01-27 07:40:34

我遇到的对我有用的解决方案是在主队列NSManagedObjectContext上设置NSManagedObjectContext,如下所示:

代码语言:javascript
复制
objectContext.stalenessInterval = 0.0;

这告诉扩展中的上下文每次都要获取新数据,而忽略缓存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35030914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档