Per Play 2 article,有一些方法可以设置缓存,包括缓存超时(在API规范中),但是我需要能够根据需要手动使整个缓存过期,有没有办法要做到这一点?特别是,我使用Cached
而非Cache
来缓存HTTP响应
def get(key: String) = Cached("key-" + key, duration = 3600) {
Action {
Ok(some_method)
}
}
答案 0 :(得分:4)
在play2.1中你可以Cache.remove("item.key")
升级到RC1并不是一个主要的,看起来和2.0.4一样稳定。
答案 1 :(得分:2)
Play 2的当前缓存API是......非常合成的。
似乎唯一的方法(我也在使用)是为null
秒设置0
值:
Cache.set("item.key", null, 0)
修改强>
实际上在Java 缓存 API从来没有对我有用,不知道为什么,也许我忽略了一些东西,所以我在操作中使用常见的Cache
来缓存它{ {1}}
Result
因此,使用上一个示例,您可以使用以下内容使其无效:
public static Result index() {
Result cachedResult = (Result) Cache.get("applicationIndex");
if (cachedResult == null) {
Result res = ok(index.render("Ready " + Math.random()));
Cache.set("applicationIndex", res, 5);
cachedResult = res;
}
return cachedResult;
}
答案 2 :(得分:0)
您可以使用此播放memcached module并运行自己的memcached server。这有一个api手动使整个缓存过期。在生产环境中,此设置还为您提供了持续重启的缓存和一些有用的缓存统计数据的额外好处。
答案 3 :(得分:0)
如果您仍然无法使用&C 39' Cached'而不是'缓存'试试这两行代码:
Cache.remove("item.key")
Cache.remove("item.key" + "-etag")
缓存需要' -etag'缓存对象也将被删除。