私は2つのコントローラーメソッドを持っています。
@CacheEvict(value="showGearListCache")
def edit(Long id) {
}
と
@Cacheable(value="showGearListCache")
def show(Long id) {
}
キャッシュを適切に表示します。ID に対して 2 回実行されることはありません。ただし、「編集」を呼び出しても、その ID はキャッシュ解除されません。したがって、show - edit - show を呼び出すと、show は 2 回目は実行されません。
キーが違うのが問題かなと思ったので追加してみました
@Cacheable(value="showGearListCache", key="#id")
@CacheEvict(value="showGearListCache", key="#id")
両方の方法で、キャッシングが完全に機能しなくなったことに気付きました (削除は気にしないでください)。そこで、クラスに grailsCacheManager を注入してキャッシュの内容を調べたところ、使用されているキーが (例) であることがわかりました。
GET:/[CONTROLLER]/show/83
ちょうど「83」だったと思ったら。
もちろん、毎回すべてのエントリをクリアすることもできますが、1 つだけを無効にするのは本質的に無駄に思えます。