每播放2 article,有办法设置缓存包括缓存超时(在API规范中),但是我需要能够手动过期整个缓存的需要,是有办法做到这一点?特别是,我使用Cached
,不Cache
缓存HTTP响应这样如何手动过期播放2缓存
def get(key: String) = Cached("key-" + key, duration = 3600) {
Action {
Ok(some_method)
}
}
每播放2 article,有办法设置缓存包括缓存超时(在API规范中),但是我需要能够手动过期整个缓存的需要,是有办法做到这一点?特别是,我使用Cached
,不Cache
缓存HTTP响应这样如何手动过期播放2缓存
def get(key: String) = Cached("key-" + key, duration = 3600) {
Action {
Ok(some_method)
}
}
播放2的电流缓存API是...非常合成。
看来,唯一的办法(即我还使用)可以0
秒设置null
值:
Cache.set("item.key", null, 0)
编辑
其实在Java中缓存 API从未工作过我很好,不知道为什么,也许我忽略了一些东西,所以我使用常见的Cache
来缓存它的动作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;
}
因此,使用前面的例子,你可以用它无效:
Cache.set("applicationIndex", null, 0)
您可以使用此播放memcached module并运行您自己的memcached server。这有一个API来手动过期整个缓存。在生产中,这个设置还为您提供了一个额外的好处,即拥有一个保持重新启动的缓存和一些有用的缓存统计信息。
的情况下,你仍然有“缓存”,而不是“高速缓存”无效问题,请尝试的这两行代码:
Cache.remove("item.key")
Cache.remove("item.key" + "-etag")
缓存需要“-etag”缓存对象也将被删除。
我会试一试,让你知道它是否有效,谢谢! – Bob
它在2.0.x中工作,但是伊万提到用Play 2.1构建新应用程序及其新的可能性会更好。最有可能的开发团队将释放稳定版本(只是我的希望),然后再下一系列的应用程序将生命:) – biesior
其实这不适用于我的代码,我使用'缓存',而不是'缓存'。查看更新的问题。 – Bob