日期:2014-05-20 浏览次数:20846 次
?
#Play缓存API
?
在现代应用程序中缓存数据是典型的优化方式,所以Play提供了一个全局缓存。缓存有一点很重要,存储在缓存中的数据可能会丢失。
对存储在缓存中的任意数据,生成策略需要落实到数据丢失的情况下。这个理念是Play的基础理念,不同与JAVA EE,JAVA EE中会话
值要在它的整个生命周期保存。
默认的缓存API实现使用EHCache。你也可以通过插件实现自己的缓存。
?
1.访问缓存API
?
play.cache.Cache对象提供了缓存API。这需要注册一个缓存插件。
这个API刻意做的很小用以运行各种实现被加入。如果你需要一个更具体的API,就使用你的缓存插件提供的API。
在缓存中存储数据:
Cache.set("item.key", frontPageNews);?
获取到缓存中的数据:
News news = Cache.get("item.key");
?
2.缓存HTTP请求
?
你可以使用标准的Acti组件轻易的创建一个优秀的缓存Action。Play的HTTP result实例的存储是安全的,并且之后可以重用。
Play为标准的用例提供了一个默认的内建助手。
@Cached("homePage")
public static Result index() {
return ok("Hello world");
}
?
?
3.缓存到模板中
?
你也可以在视图模板中获取到缓存:
@cache.Cache.getOrElse("cached-content", 3600) {
<div>I’m cached for an hour</div>
}
?
?
4.会话缓存
?
Play提供了一个全局缓存,它的数据可以随意访问。如何限制某个特定的用户的所见?
比如说,你或许想要缓存某个特定用户适用的指标。
// Generate a unique ID
String uuid=session("uuid");
if(uuid==null) {
uuid=java.util.UUID.randomUUID().toString();
session("uuid", uuid);
}
// Access the cache
News userNews = Cache.get(uuid+"item.key");
if(userNews==null) {
userNews = generateNews(uuid);
Cache.set(uuid+"item.key", userNews );
}