编辑
开始卡盘(抛出异常),然后没有“坏”数据要缓存。通过捕获异常,甚至包含在 Either[Why-Fail, Option[T]] 中,我只是为自己做更多的工作。异常是(理想情况下)异常,所以记录,抛出,然后继续......
原始
缓存很好,但缓存失败的操作很糟糕
Cache.orElse("directory.active") {
Ok( dao.findAll(active = true) as json )
}
DAO 数据库查找可能会失败(在这种情况下,数据库/查询失败时会返回一个空列表),这将导致缓存错误数据。
如何解决这个问题?我们只想运行一次查询,然后缓存进一步的请求。在 Scala 中,您可以进行惰性初始化,但这会产生永久缓存,这也是不可取的(需要在成员目录添加/编辑时清除缓存)。
假设这适用于任何平台:基本上需要执行一次操作并将其缓存在成功的结果上。