是oscache提供的標籤庫中最重要的乙個標籤,包括在標籤中的內容將應用快取機制進行處理,處理的方式將取決於程式設計者對cache標籤屬性的設定。
1. 快取時間超過了cache標籤設定的time或者duration屬性規定的超時時間;
2. cron屬性規定的時間比快取資訊的開始時間更晚;
3. 標籤中快取的內容在快取後又被重新重新整理過;
4. 其他快取超期設定
如果符合上面四項中的任何一項,被快取的內容視為已經失效,這時被快取的內容將被重新處理並且返回處理過後的資訊,如果被快取的內容沒有失效,那麼返回給使用者的將是快取中的資訊。
[color=blue][b]cache標籤的屬性說明[/b][/color]
(這些屬性可以單獨使用,也可以根據需要組合使用)
[b]time[/b] - 快取內容的時間段,單位是秒,預設是3600秒,也就是乙個小時,如果設定乙個負值,那麼這部分被快取的內容將永遠不過期。
[b]duration[/b] - 指定快取內容失效的時間,是相對time的另乙個選擇,可以使用簡單日期格式或者符合uso-8601的日期格式。如:duration='pt5m' duration='5s'等。
[b]refresh[/b] - false 或者true。如果refresh屬性設定為true,不管其他的屬性是否符合條件,這部分被快取的內容都將被更新,這給程式設計者一種選擇,決定什麼時候必須重新整理。
[b]mode[/b] - 如果不希望被快取的內容增加到給使用者的響應中,可以設定mode屬性為"silent"。此時被快取的部分不在頁面上顯示,而其它任意的mode屬性值都會將快取的部分顯示到頁面上。
[b]groups[/b] - 指定當前cache標籤所屬的組,可使用「,」分割組名。這樣就可以對快取項進行分組了。如果快取項依賴於應用的其它部分或其它資料,分組就有了用武之地——當這種依賴改變時(重新整理相關的組),這個組的所有快取項都將過期。
[b]language[/b] - 使用iso-639定義的語言碼來發布不同的快取內容(under an otherwise identical key)。要在乙個多語言**上同一段jsp**不同使用者的引數提供不同的語言時,這個屬性會很有用。
[b]refreshpolicyclass[/b] - 指定自定義的重新整理策略類的全限定類名。這個類繼承自com.opensymphony.oscache.web.webentryrefreshpolicy
[b]refreshpolicyparam[/b] - 指定任意需要傳給refreshpolicyclass的引數。如果沒有指定refreshpolicyclass,則這個值不起作用。其它可用的屬性還包括:cron 、groups、language、refreshpolicyclass、refreshpolicyparam。
[b][color=darkblue]cache標籤例項分析[/color][/b]
最簡單的cache標籤用法。使用預設的關鍵字來標識cache內容,超時時間是預設的3600秒。
<% //自己的jsp**內容%>
設定time屬性為負數使快取內容永不過期
<% //自己的jsp**內容 %>
使用duration屬性設定超期時間
使用mode屬性使被快取的內容不加入給客戶的響應中
<% //自己的jsp**內容 %>
用自己指定的字串標識快取內容,並且設定作用範圍為session。
<% //自己的jsp**內容%>
動態設定key值,使用自己指定的time屬性設定快取內容的超時時間,使用動態refresh值決定是否強制內容重新整理。因為oscache使用key值來標識快取內容,使用相同的key值將會被認為使用相同的的快取內容,所以使用動態的key值可以自由的根據不同的角色、不同的要求決定使用不同的快取內容。
" time="1800" refresh="<%= needrefresh %>">
<% //自己的jsp**內容%>
usecached標籤:必須巢狀在標籤中。告訴所在的標籤是否使用已經快取的內容(預設為true,使用快取的內容)。可以使用這個標籤來控制快取。比如使用標籤重新整理某個key的快取,但可以在必要的地方即使這樣的強制重新整理也仍然使用快取內容而不重新整理。
<% try catch (exception e) %>
[b][color=darkblue]使用標籤的特殊說明[/color][/b]
標籤的屬性值如果動態生成,則需要先把動態生成的值賦予乙個變數,再使用jsp 表示式把動態值賦予對應的屬性。
<%
string keyvalue =
(string)request.getattribute("keyvalue");
if(keyvalue == null)
keyvalue = "";
%>
'>
......
'>
......
屬性的值此時為字串:"<%=(string)request.getattribute("keyvalue")%>"
標籤的屬性值對boolean是強型別的,比如cache的refresh屬性要求為true或false,示例如下:
'>
......
OSCache 快取運用
對於一些 型別的專案.我們可以採取的方案就是減少和資料庫方面的交換.這樣我們可以使用快取.由於專案使用hibernate已經使用了ehcache的2級快取.這裡可以在web層上使用oscache來進行快取 需要的jar包有 oscache.jar和lib commons logging.jar 開發...
OSCache快取過濾器
用cashfilter實現頁面級快取。在oscache元件中提供了乙個cachefilter用於實現頁面級的快取,主要用於對web應用中的某些動態頁面進行快取,尤其是那些需要生成pdf格式檔案 報表 檔案等的頁面,不僅減少了資料庫的互動 減少資料庫伺服器的壓力,而且對於減少web伺服器的效能消耗有很...
OSCache 快取過濾器CacheFilter
用cashfilter實現頁面級快取。在oscache元件中提供了乙個cachefilter用於實現頁面級的快取,主要用於對web應用中的某些動態頁面進行快取,尤其是那些需要生成pdf格式檔案 報表 檔案等的頁面,不僅減少了資料庫的互動 減少資料庫伺服器的壓力,而且對於減少web伺服器的效能消耗有很...