OScache爲web配置緩存

   OSCache標記庫由OpenSymphony設計,它是一種開創性的jsp定製標記應用,提供了在現有jsp頁面之內實現快速內存緩衝的功能。OSCache是一個廣泛採用的高性能的J2EE緩存框架,OSCache能用於任何Java應用程序的普通的緩存解決方案。OSCache有以下特點:緩存任何對象,你可以不受限制的緩存部門jsp頁面或HTTP請求,熱河java對象都可以緩存。擁有全面的API--OSCache API給你全面的程序來控制所有的OSCache特性。永久緩存-緩存能隨意的寫入硬盤,甚至能讓應用重啓。支持集羣-集羣緩存數據能被單個的進行參數配置,不需要修改代碼,包括可插入式的刷新策略。下面給出個樣例:

新建web項目,要實現OSCache緩存,需要導入commons-logging.jar,oscache-2.4.1.jar兩個包。

在jsp頁面首部引入標籤庫:

<%@taglib uri="http://www.opensymphony.com/oscache" prefix="cache"%>


在OSCache中最重要的標籤<cache:cache></cache:cache>


<cache:cache>
       <%=new Date() %>
</cache:cache>

以上代碼就實現了OSCache緩存,當刷新界面時,其中時間是不會改變。

第二種,帶請求參數。

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

<cache:cache>
        name=${param.name }
    </cache:cache>

jsp中是以上代碼,我們訪問/oscache/index.jsp?name=ttt,當我們改變name=ppp,刷新界面是否會改變,會改變,因爲key爲請求的URL+查詢字串組成。


<cache:cache key="xxx">
    name=${param.name }
    </cache:cache>

當jsp是以上代碼時,我們訪問/oscache/index.jsp?name=ttt,當我們改變name=ppp,刷新界面,此時jsp內容會進行改變,因爲key已經指定xxx,key不會發生改變。


<cache:cache key="xxx" time="10">
    	name=${param.name }
    </cache:cache>

當如上代碼所示,添加一個time屬性,time屬性爲過期時間。當我們改變屬性,在10秒內刷新界面不會發生改變。過去10秒後,再進行刷新界面,此時界面會發生改變。

<cache:cache key="xxx" time="50" refresh="${param.refresh }">
    	name=${param.name }
    </cache:cache>

如上代碼,在time=30時,我們想進行刷新緩存,指定refresh屬性。當其值爲true時,可以進行刷新緩存。如http://localhost:8080/oscache/index.jsp?name=xxx&refresh=true

此時刷新界面,改變name值,會發生變化。


以上都是頁面的局部緩存。


下面介紹下全局緩存,指定什麼頁面進行緩存,通過filter實現:

<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>/product/*</url-pattern>
	</filter-mapping>

通過以上代碼,所有的路徑爲/product/*的請求路徑都會進行OSCache緩存,過期時間爲7200秒。


通過OSCache緩存,可以顯著提高web的性能,當一個用戶訪問一個頁面時,如果不加緩存,會頻繁的與數據庫進行交互,這樣效率就降低了,如果設置了OSCache緩存,在短時間頁面一般不會發生改變,所有可以設置OSCache緩存,直接從緩存直接讀取頁面,效率有了非常大的提供。

OSCache相比Hibenate的二級緩存,性能也是非常好的,Hibenate的二級緩存,緩存後數據後,需要通過EL表達式讀取到頁面上,而OSCache緩存直接將整個頁面數據緩存下來,只需要根據路徑讀取即可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章