oscacheキャッシュ技術


一、OSCacheは現在最も広く使われているキャッシュプランです.JBoss、Hibernate、Springなどはこれを支持しています.ここではOSCacheの配置と使用過程を簡単に紹介します.
http://www.opensymphony.com/oscache/download.actionに行ってあなたが必要なOsccheバージョンをダウンロードしてください.
本人が使用しているバージョンはOcache-2.4です.以下はこのバージョンを例とします.
1.ダウンロードしたファイルを解凍してSrcまたはetcディレクトリからoscache.propertiesファイルを取得し、srcルートディレクトリまたは発表環境の/WEB-INF/clasesディレクトリに入れます.もしディスクキャッシュを作成する必要があれば、Ocache.propertiesのcache.path情報を修正しなければなりません.
 
OCacheラベルライブラリファイルのOcache.tdから/WEB-INF/clasesディレクトリをコピーします.
今あなたのアプリケーションのディレクトリは以下のようです.APPLICATIONWEB-INF\lib\oscache.jar$WEB_APPLICATIONWEB-INF\classis\oscache.properties$WEB_APPLICATIONWEB-INF\classes\oscache.tld
2.oscache.propertiesファイル配置ガイド
cache.memory値はtrueまたはfalseで、デフォルトはメモリにキャッシュします.falseに設定すると、cacheはデータベースまたはハードディスクにしかキャッシュできません.cacheには他の意味がありますか?
cache.caacityキャッシュ要素個数
cache.persistence.lass恒久化キャッシュクラスは、このような種類の場合、cache.path情報を設定しなければならない.
cache.clusterはクラスタ設定情報に関連しています.cache.cluster.multicast.ipはブロードキャストIPアドレスcache.cluster.propertiesのようなクラスタ属性です.
3.oacheの応用
  jspページキャッシュ、cache 1.jsp
書き記す
<%@page contentType="text/html;charset=GBK"%
<%@page import="java.util.*"
<%@taglib uri="/WEB-INF/oscache.tld"prefix="cache"%
<>>
<body>
キャッシュされていない日付:<%=new Date()>



<cache:cache time=“30”>
30秒ごとにキャッシュを更新する日付:<%=new Date()>.


<cache:cache key=「testcache」>
キャッシュの日付を手動で更新します:<%=new Date()>



<a href=「cache 2.jsp」>手動更新


 cache 2.jsp

<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="/WEB-INF/oscache.tld" prefix="cache" %>
<html>
<body>

     ...<p>

<cache:flush key="testcache" scope="application"/>

<a href="cache1.jsp">  </a>

</body>
</html>
 
  フィルタキャッシュ
web.xml
 <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>3600</param-value> 
		</init-param> 
		<init-param> 
		<param-name>scope</param-name> 
		<param-value>session</param-value> 
		</init-param> 
	</filter>  
	<filter-mapping> 
		<filter-name>CacheFilter</filter-name> 
		<url-pattern>/selectedUser4UserPopupSelect.do</url-pattern> 
	</filter-mapping>
	<filter-mapping> 
		<filter-name>CacheFilter</filter-name> 
		<url-pattern>/userPopupSelector.do</url-pattern> 
	</filter-mapping> 
	<filter-mapping> 
		<filter-name>CacheFilter</filter-name> 
		<url-pattern>/selectedUserFrame4UserPopupSelect.do</url-pattern> 
	</filter-mapping> 
	<filter-mapping> 
		<filter-name>CacheFilter</filter-name> 
		<url-pattern>/listUserFrame4UserPopupSelect.do</url-pattern> 
	</filter-mapping> 
	<filter-mapping> 
		<filter-name>CacheFilter</filter-name> 
		<url-pattern>/listUser4PopupSelect.do</url-pattern> 
	</filter-mapping> 
	<filter-mapping> 
		<filter-name>CacheFilter</filter-name> 
		<url-pattern>/popupAllOrganizationTree.do</url-pattern> 
	</filter-mapping> 
	<filter-mapping> 
		<filter-name>CacheFilter</filter-name> 
		<url-pattern>/index.do</url-pattern> 
	</filter-mapping> 
	<filter> 
		<filter-name>osCacheFilter</filter-name> 
		<filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class> 
		<init-param> 
		<param-name>time</param-name> 
		<param-value>3600</param-value> 
		</init-param> 
		<init-param> 
		<param-name>scope</param-name> 
		<param-value>application</param-value> 
		</init-param> 
	</filter>  
	<filter-mapping> 
		<filter-name>osCacheFilter</filter-name> 
		<url-pattern>/listBig4Entity.do</url-pattern> 
	</filter-mapping>
	<filter-mapping> 
		<filter-name>osCacheFilter</filter-name> 
		<url-pattern>/listSubEntity4Index.do</url-pattern> 
	</filter-mapping> 
 
 
4 OCacheのキャッシュコンポーネントの使用を開始します.
OCacheでは、キャッシュ範囲によって、2つの異なる方法に分けられています.一つはキャッシュJSPページの一部または全部の内容であり、一つはページ全体のファイルに基づくキャッシュであります.
4.1 JSP部分の内容キャッシュ
4.1.1 Cache-OCacheが提供するキャッシュラベル
これはOCacheが提供するラベルライブラリの中で最も重要なラベルであり、ラベルに含まれるコンテンツはキャッシュ機構を適用して処理され、処理の方式はプログラミング者のcacheタグ属性の設定に依存する.
最初の要求が到着した時、ラベルの内容が処理されてキャッシュされ、次の要求が到着した時、キャッシュシステムはこの部分のキャッシュが失効したかどうかを確認します.主に以下の項目です.
1.キャッシュ時間がcacheタグ設定のタイムアウトまたはduration属性に規定されたタイムアウト時間を超えました.2.cron属性に規定された時間はキャッシュ情報の開始時間よりも遅くなりました.ラベルにキャッシュされた内容はキャッシュされた後にまた更新されました.その他のキャッシュオーバータイム設定は上記4つのいずれかに該当すると、キャッシュされた内容はすでに無効と見なされます.このときキャッシュされたコンテンツは再処理され、処理後の情報に戻され、キャッシュされたコンテンツが無効にならない場合、ユーザに返されるのはキャッシュ中の情報である.
cacheラベルの属性説明:
key-キャッシュ内容を識別するキーワード.指定された作用範囲内では唯一でなければなりません.デフォルトのkeyは、ページにアクセスされるURIと後の要求文字列である.
同じページで彼のkey属性を指定せずに多くのcacheタグを使用することができます.この場合、システムはページのURIと後ろの要求文字列を使用します.また、これらのkeyに自動的にインデックス値を追加して、これらのキャッシュ内容を区別します.しかし、このような方式はおすすめできません.
scope-キャッシュが働く範囲は、appicationまたはsessionとすることができます.
タイムme-キャッシュ内容の時間帯、単位は秒で、デフォルトは3600秒、つまり一時間です.負の値を設定すると、この部分がキャッシュされた内容はいつまでも有効期限が切れません.
duration-キャッシュ内容が失効した時間を指定します.相対的なtimeのもう一つの選択です.簡単な日付フォーマットまたはUSO-801に該当する日付フォーマットを使用できます.duration='PT 5 M'duration='5 s'など
refresh-falseまたはtrue.
refresh属性がtrueに設定されている場合、他の属性が条件に合っているかどうかにかかわらず、この部分がキャッシュされている内容は更新されます.これはプログラミング者に選択され、いつ更新しなければならないかを決定します.
mode-プログラミング者がキャッシュされたコンテンツをユーザへの応答に追加したくない場合、mode属性は「silent」に設定できます.
他の利用可能な属性は、cron、groups、langage、refreshpolicyclass、refreshpolicyparamを含む.
上のこれらの属性は単独で使うこともできますし、必要に応じて組み合わせて使うこともできます.以下の例では、これらの一般的な属性の使い方を説明します.
4.1.2 Cacheラベルの実例分析:
1.一番簡単なcacheラベルの使い方
デフォルトのキーワードを使ってcacheの内容を識別します.タイムアウトはデフォルトの3600秒です.
<cache:cache><%/自分のJSPコード内容%>
 
2.自分で指定した文字列でキャッシュ内容を識別し、役割範囲をセッションとして設定します.
<cache:cache key=「foobar」scope=「session」><%/自分のJSPコードの内容%>3.key値を動的に設定し、自分で指定したtime属性を使ってキャッシュ内容のタイムアウト時間を設定し、動的refsh値を使って強制的な内容更新を決定します.
OScacheは、key値を使用してキャッシュ内容を識別し、同じkey値を使用すると同じキャッシュコンテンツを使用すると考えられるので、動的なkey値を使用して、異なるキャラクター、異なる要求に応じて、異なるキャッシュコンテンツを使用することができる.
<cache:cache key=「%=product.getId()%」time=「1800」refsh=「%=needRefsh%」<%/自分のJSPコード内容%>
 
4.設定time属性は負の値でキャッシュ内容はいつまでも有効期限が切れません.
<cache:cache time=「-1」><%/自分のJSPコードの内容%>
 
5.duration属性を使ってオーバータイムを設定する
<cache:cache duration='PT 5 M'<%/自分のJSPコードの内容%
 
6.mode属性を使用してキャッシュされた内容を顧客の応答に追加しない
<cache:cache mode='silent'<%/自分のJSPコード内容%>
 
4.2 Cash Filterでページ級キャッシュを実現する
OCacheコンポーネントには、ページレベルのキャッシュを実現するためのCacheFilterが提供されています.主にウェブアプリケーションの中のいくつかのダイナミックページをキャッシュするために使用されます.特に、pdfフォーマットファイル/レポート、画像ファイルなどを生成する必要があるページは、データベースのインタラクションを低減するだけでなく、データベースサーバの圧力を低減します.また、webサーバの性能消費を低減する効果が大きい.
このような機能の実現は、web.xmlで設定することにより、どのページまたは一組のページをキャッシュするかを決定し、また、設定ファイルに基づく実現形態はJ 2 EEにとって標準的な実施形態であるべきキャッシュの関連属性を設定することができる.
[注]お客様が訪問した時にhttpヘッダに戻るコード200のページ情報のみがキャッシュされます.
1.単一ファイルをキャッシュする
web.xmlを修正し、下記の内容を追加して、testContentit.jspページのキャッシュを確定します.
CachelFiltercompensymphone.oscache.web.filter.Cachelter>testContent.jspページの内容をキャッシュします.---/testContott.jsp
 
2.キャッシュURL pattern
web.xmlを修正し、下記の内容を追加して、*.jspページをキャッシュします.
CachelFiltercompensymphone.oscache.web.filter.Cachelter>すべてのjspページの内容をキャッシュします.---*.jsp
 
3.自分でキャッシュ属性を設定する
ページレベルキャッシュの場合、Cachefilterの初期属性を設定してキャッシュの一部の特性を決定することができます.time属性設定キャッシュの時間帯はデフォルトで3600秒です.自分の必要に応じて設定することができます.scope属性設定は、デフォルトではappication、sessionを含みます.
<filter><filter-name>CachelFilter<filter-name><filter-class>compensmphoy.oscache.web.filter.C fefefefelter<filter-class><init-param><param-name>time<param-name>time<param-name>timesessionCacヘFilter*.jsp