当前位置: 代码迷 >> .NET Framework >> Play framework 2.0 -应用缓存
  详细解决方案

Play framework 2.0 -应用缓存

热度:42   发布时间:2016-05-02 00:26:53.0
Play framework 2.0 -使用缓存

?

#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 );	}
  相关解决方案