我有两种控制器方法,
@CacheEvict(value="showGearListCache")
def edit(Long id) {
}
和
@Cacheable(value="showGearListCache")
def show(Long id) {
}
正确显示缓存:它不会为任何 id 执行两次。但是,调用“编辑”不会取消缓存该 ID。所以如果我调用show - edit - show,show 将不会执行第二次。
我认为问题可能是键不同,所以我尝试添加
@Cacheable(value="showGearListCache", key="#id")
@CacheEvict(value="showGearListCache", key="#id")
两种方法,并注意到缓存完全停止工作(没关系驱逐)。因此,我通过将 grailsCacheManager 注入类来检查缓存中的内容,并发现它使用的键是(一个示例):
GET:/[CONTROLLER]/show/83
当我预计它只是“83”时。
当然,我每次都可以清除所有条目,但是如果我只是使一个无效,那似乎本质上是浪费。