paulwong

          在jsp頁面中使用oscache標簽實現可配置的頁面緩存

          最近在學習oscache的相關內容,寫點東西作為鞏固

          如果在jsp中使用如下標簽

          <cache:cache key="foobar" scope="session">  
                    some jsp content   
          </cache:cache> 


          那么這中間的一段jsp代碼將會以key="foobar"緩存在session中,任何其他頁面中使用這個key
          的cache標簽都能共享這段存在緩存中的執行結果

          考慮一個需求,一個頁面是有許多個不同的jsp文件拼出來的
          可能在頁首有隨機的廣告,登錄用戶的信息,系統的即時信息,固定的目錄信息等等
          這其中可以考慮將固定的目錄信息放入緩存中,而其他動態信息則即時刷新
          再進一步考慮 有時候頁面之間的信息是關聯的,只有當其中一條信息的內容變化了才需要去刷新
          對于這種需求就可以考慮在<cache:cache/>標簽中配置group屬性,將不同的具有關聯關系的cache內容
          分組,這樣oscache會自動的幫你檢查該組緩存內容的變化情況,如果有任何一子成員組的內容變化了
          則會執行刷新,這樣就可以在頁面實現數據的動態同步
          代碼如下:(來源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>  
             
           
          <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設置為每次都執行刷新,所以test1為key的cache每次刷新頁面內容都是重新執行過的

          <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中

          posted on 2008-02-19 22:28 paulwong 閱讀(1503) 評論(0)  編輯  收藏 所屬分類: J2EE

          主站蜘蛛池模板: 东源县| 浙江省| 平乐县| 九龙县| 龙南县| 阳曲县| 谷城县| 丰都县| 长白| 东阳市| 五华县| 昌黎县| 禄劝| 利辛县| 肇州县| 泗阳县| 临漳县| 海晏县| 米脂县| 琼海市| 苍山县| 永康市| 逊克县| 玛沁县| 县级市| 涞源县| 思南县| 北票市| 晋宁县| 通州市| 巫溪县| 中卫市| 鄂尔多斯市| 昌平区| 崇义县| 临泉县| 铅山县| 日照市| 都昌县| 德兴市| 溧阳市|