OSCache是一個開放式資源緩衝庫,可從http://www.opensymphony.com/oscache免費下載。它包括一組JSP的標籤,通過它們可以很容易的在你的程式中實現頁面緩衝,同時,還可以使用它的過濾器,可緩衝的不僅僅是JSP頁面,還可以緩衝任何Servlet產生的內容。
下面先介紹一下它的一些術語:
緩衝記錄:儲存在頁面緩衝器內的對象稱為一個緩衝記錄。在一個JSP程式中,它通常是一個JSP頁面、JSP頁面的一部分或Servlet的輸出。
緩衝鍵碼:它就像一個哈西表(Hash Table)。當在頁面緩衝中儲存緩衝記錄時,你必須提供緩衝鍵碼來識別各個條目。在一個JSP程式中,你可能需要把幾個請求參數組合在一起來形成緩衝鍵碼,或者使用頁面請求URI作為緩衝鍵碼。
緩衝周期:是一個緩衝記錄在保留在頁面緩衝器中的時間。對於一個顯示資料時常更新的JSP頁面,你應該設定一個短的緩衝周期。
緩衝域:是緩衝被儲存在的範圍。你可以在應用程式定義域記憶體儲緩衝記錄,這樣,緩衝記錄可以被所有使用者分享;或者在會話域,在前使用者基礎上儲存緩衝記錄。
安裝OSCache
解壓下載下來的檔案包,將oscache.jar放到lib目錄下,將oscache.properties和oscache.tld放到WEB-INF/classes下。在web.xml中加入標籤庫的配置:
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>
</taglib>
oscache.properties檔案是它的配置,如果你像將快取檔案存放在硬碟上,並使用windows,在指定目錄上需要使用//。比如你的目錄是c:/cache,那麼應該寫上c://cache。
OSCache JSP標籤
使用這些標籤很簡單。你要做的是在需要緩衝的JSP頁面部分防止<os:cache>標籤。以下JSP頁面的樣本表明了其實現方法:
<!--匯入標籤庫-->
<%@ taglib uri="/WEB-INF/oscache.tld" prefix="os" %>
<!--開始使用-->
<os:cache time="60">
<!--這裡是你要緩衝的JSP代碼-->
<os:cache>
怎麼樣很簡單吧,你只需把你要緩衝的代碼用<os:cache>標籤包圍起來即可,這裡緩衝周期是60秒,你可以根據你的具體情況來修改。在這個例子中,我們沒有指定一個緩衝鍵碼,預設情況下,OSCache將使用請求URI作為緩衝記錄的鍵碼。也沒有指定一個緩衝域,預設情況下將會使用應用程式定義域。
OSCacheServlet過濾器
我們現在可以用它的過濾器來緩衝Servlet的輸出,通過使用com.opensymphony.module.oscache.web.filter.CacheFilter類來實現。現在你需要做的是在程式的web.xml中添加這個過濾器,以及為所有你希望緩衝的URL樣式添加過濾器映射。以下是web.xml檔案,我們只給出需要的部分:
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.opensymphony.module.oscache.web.filter.CacheFilter</filter-class>
<init-param>
<param-name>time</param-name>
<param-value>60</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<uri-pattern>/servlets/*</url-pattern>
</filter-mapping>
過濾器元素應該在上下文參數之後,但在Servlet和監聽器元素之前。
如同前面JSP的例子一樣,我們同樣設定了緩衝時間為60秒。其他的參數,如緩衝鍵碼和緩衝域被省略,使用預設值。<filter-mapping>元素配置CacheFilter,以便它為匹配樣式/servlets/*的所有請求URL緩衝相應輸出。
這篇教程只是簡單的介紹一下OSCache的用法,以後我會在繼續添加,請繼續關注我的部落格!