最近在學習oscache的相關內容,寫點東西作為鞏固
如果在jsp中使用如下標簽
<cache:cache key="foobar" scope="session">
some jsp content
</cache:cache>
那么這中間的一段jsp代碼將會以key="foobar"緩存在session中,任何其他頁面中使用這個key
的cache標簽都能共享這段存在緩存中的執(zhí)行結果
考慮一個需求,一個頁面是有許多個不同的jsp文件拼出來的
可能在頁首有隨機的廣告,登錄用戶的信息,系統的即時信息,固定的目錄信息等等
這其中可以考慮將固定的目錄信息放入緩存中,而其他動態(tài)信息則即時刷新
再進一步考慮 有時候頁面之間的信息是關聯的,只有當其中一條信息的內容變化了才需要去刷新
對于這種需求就可以考慮在<cache:cache/>標簽中配置group屬性,將不同的具有關聯關系的cache內容
分組,這樣oscache會自動的幫你檢查該組緩存內容的變化情況,如果有任何一子成員組的內容變化了
則會執(zhí)行刷新,這樣就可以在頁面實現數據的動態(tài)同步
代碼如下:(來源oscache:groupTest.jsp )
<%@ page import="java.util.*" %>
<%@ taglib uri="http://www.opensymphony.com/oscache" prefix="cache" %>
<head>
<title>Test Page</title>
<style type="text/css">
body {font-family: Arial, Verdana, Geneva, Helvetica, sans-serif}
</style>
</head>
<body>
<a href="<%= request.getContextPath() %>/">Back to index</a><p>
<hr>Flushing 'group2'
<hr>
<cache:flush group='group2' scope='application'/>
<hr>
<cache:cache key='test1' groups='group1,group2' duration='5s'>
<b>Cache Time</b>: <%= (new Date()).getTime() %><br>
This is some cache content test1 that is in 'group1' and 'group2'. Normally it would refresh if it
was more than 5 seconds old, however the <cache:flush group='group2' scope='application'>
tag causes this entry to be flushed on every page refresh.<br>
</cache:cache>
<hr>
這里有兩個cache分組group1和group2,將group2設置為每次都執(zhí)行刷新,所以test1為key的cache每次刷新頁面內容都是重新執(zhí)行過的
<cache:cache key='test2' groups='group1' duration='5s'>
<b>Cache Time</b>: <%= (new Date()).getTime() %><br>
This is some cache content test2 that is in 'group1' (refreshes if more than 5 seconds old)<br>
</cache:cache>
<hr>
而test2只有當間隔時間超過5秒才會更新內容
<cache:cache key='test3' duration='20s'>
<b>Cache Time</b>: <%= (new Date()).getTime() %><br>
This is some cache content test3 that is in 'group1' and 'group2'. The groups are added using the <cache:addgroup /> tag.<br>
<cache:addgroup group='group1'/>
<cache:addgroup group='group2'/>
</cache:cache>
<hr>
<cache:cache key='test4' duration='20s'>
<b>Cache Time</b>: <%= (new Date()).getTime() %><br>
This is some cache content test4 that is in 'group1' and 'group2'. The groups are added using the <cache:addgroups /> tag.<br>
<cache:addgroups groups='group1,group2'/>
</cache:cache>
<hr>
</body>
</html>
<cache:addgroup group='{you_group}'/>可以將所在的cache加入存在的group中