#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 );
}