oscache 使用

之前做的項目面臨一個優化的問題..對於一些網站類型的項目.我們可以採取的方案就是減少和數據庫方面的交換..這樣我們可以使用緩存..由於項目使用Hibernate已經使用了Ehcache的2級緩存..這裏可以在web層上使用oscache來進行緩存
  oscache下載地址http://www.opensymphony.com/oscache/download.action
需要的jar包有:oscache.jar和lib\commons-logging.jar
開發過程中需要將oscache.properties放在src下面.
oscache又分爲局部緩存和全局緩存.先介紹幾個局部緩存比較常用的標籤

1.緩存的key將以請求的uri+查詢字符串組成.如果你訪問
oscache/index.jsp?name=xxxoscache/index.jsp?name=ppp
將得到兩份緩存。緩存默認存放在application範圍.緩存時間默認3600秒.即一個小時


2.這時候緩存將以name爲key。不再以請求的uri+查詢字符串組成,所有如果你訪問
oscache/index.jsp?name=xxx和oscache/index.jsp?name=ppp
將得到一份緩存
Java代碼 複製代碼 收藏代碼
  1. <cache:cache key="name">   
  2. name=${param.name}   
  3. </cache:cache>  
<cache:cache key="name">
name=${param.name}
</cache:cache>



3.緩存範圍設置爲session。這時候緩存保持的用戶的session中.如果用戶關閉瀏覽器.再重新打開一個新瀏覽器.
原來的緩存內容將不存在
Java代碼 複製代碼 收藏代碼
  1. <cache:cache key="name" scope="session">   
  2. name=${param.name}   
  3. </cache:cache>  
<cache:cache key="name" scope="session">
name=${param.name}
</cache:cache>



4.下面設置緩存時間爲10秒,超過10秒後,緩存內容將消失掉.
Java代碼 複製代碼 收藏代碼
  1. <cache:cache key="name" time="10">   
  2. name=${param.name}   
  3. </cache:cache>  
<cache:cache key="name" time="10">
name=${param.name}
</cache:cache>



5.refresh爲true將導致緩存內容過期被清除.簡單地說.該屬性爲true用於清除緩存
Java代碼 複製代碼 收藏代碼
  1. <cache:cache key="name" time="60" refresh="${param.refresh}">   
  2. name=${param.name}   
  3. </cache:cache>  
<cache:cache key="name" time="60" refresh="${param.refresh}">
name=${param.name}
</cache:cache>


局部緩存清理緩存方式:
人爲管理緩存<flush>標籤
<cache:flush scope="application" />
清除application範圍內的緩存
<cache:flush scope="session" />
清除session範圍內的緩存
<cache:flush scope="application" group="currencvData"/>
清除application範圍內組名爲currencvData的所有緩存

而局部緩存的名字重複的話後面添加到緩存將取代前面的緩存.所以命名過程中需要有規範.

下面是全局緩存的介紹.這裏只需要在web.xml進行配置就可以使用到全局緩存
Java代碼 複製代碼 收藏代碼
  1. <filter>   
  2.             <filter-name>CacheFilter</filter-name>   
  3.             <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>   
  4.             <init-param>   
  5.                 <param-name>time</param-name>   
  6.                 <param-value>7200</param-value>   
  7.             </init-param>   
  8.             <init-param>   
  9.                 <param-name>scope</param-name>   
  10.                 <param-value>application</param-value>   
  11.             </init-param>   
  12.     </filter>   
  13.     <filter-mapping>   
  14.             <filter-name>CacheFilter</filter-name>   
  15.             <url-pattern>/xxx/*</url-pattern>   
  16.     </filter-mapping>  
<filter>
		    <filter-name>CacheFilter</filter-name>
		    <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
		    <init-param>
		        <param-name>time</param-name>
		        <param-value>7200</param-value>
		    </init-param>
		    <init-param>
		        <param-name>scope</param-name>
		        <param-value>application</param-value>
		    </init-param>
	</filter>
	<filter-mapping>
		    <filter-name>CacheFilter</filter-name>
		    <url-pattern>/xxx/*</url-pattern>
	</filter-mapping>

全局緩存是對整個頁面的url地址爲key緩存相應的頁面.
所以在使用全局緩存之前我們需要考慮清楚哪些頁面的url我需要緩存的.在定義action的過程中需要考慮請求url的名字的命名..<url-pattern>/xxx/*</url-pattern>

總結:在許多網站中都使用了緩存技術.而oscache使用面也比較廣..使用方式根據個人的項目而定..我只是將自己瞭解總結一下..還有在瞭解許多工具和開源框架中發現許多東西都要有明確的命名規範和規定..在我們項目開發中也需要更多的規範和約束才能使得項目更好的運作..感覺開源框架也是別人所寫的項目..我們可以從中得到許多信息..
發佈了27 篇原創文章 · 獲贊 10 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章