这个API包装器缓存方案有名称吗?

时间:2014-05-09 22:32:09

标签: api caching wrapper

在开发任何类型的API包装器时,传统的缓存存在一些问题。首先,较短的缓存时间意味着更多的最新数据,但它们也最大限度地减少了缓存的好处。其次,任何返回过期缓存结果的请求都需要等待新请求。我一直在思考如何解决这些问题,我已经设计出一个解决方案,但我确信它已经是一个问题了。只是想知道它是否有名字。

我的解决方案

  • 用户A生成原始请求。由于不存在先前缓存的副本,因此用户等待包装器联系上游API并返回数据。结果是缓存的。
  • 用户B稍后生成相同的请求。包装器提供来自用户A的缓存结果,但随后熄灭并获取新结果并覆盖缓存副本。用户B没有看到更新的结果,但它是针对下一个用户的。因此,用户C会看到该版本,依此类推。
  • 用户X在相当长的时间(天数,也许,取决于数据的性质)之后发出请求。由于缓存副本实际上毫无价值,因此会出现与用户A一样的新上游请求。

通过这种方案,大多数用户永远不必等待上游请求,并且每个人都看到了合理的近期数据。对我来说似乎是一个非常有效的系统。如果我必须给它起个名字,我可能会选择 postfetching

那么,有这个名字吗?

1 个答案:

答案 0 :(得分:0)

它可以被认为是一种直读式缓存,但它可能会导致返回过时的缓存结果。

...具体

  • 用户B稍后生成相同的请求。包装器提供来自用户A的缓存结果,但随后熄灭并获取新结果并覆盖缓存副本。用户B没有看到更新的结果,但它是针对下一个用户的。因此,用户C会看到该版本,依此类推。

这导致用户B(用户C等)可能从缓存中接收过时记录。