Caching mit OSCache Teil 2
Sunday, July 1st, 2007Zentrales Element im OSCache sind die konkreten Implementierungen der AbstractCacheAdministrators Klasse. OSCache bietet zwei Implementierungen:
GeneralCacheAdministrator
Eine generelle Implementierung, die auch für Desktopanwendungen eingesetzt werden kann.ServletCacheAdministrator
Spezialisiert auf Caching im Servlet-Umfeld, kann unter anderem aufSessionoderServletContext-Ebene cachen.
Die Funktionsweise eines CacheAdministrators ähnelt einer HashMap, geht aber weit darüber hinaus. So können Cache-Einträge ablaufen und müssen bei erneuten Zugriffsversuch erneuert werden. Auch die Anzahl von Cache-Einträgen soll limitiert werden. Mit der Methode setAlgorithmClass(String clazz) kann der Algorithmus konfiguriert werden.
Zur Verfügung stehen:
- FIFOCache
- LRUCache
- UnlimitedCache
Beispiel:
Das nachfolgende Beispiel verwendetet einen FIFOCache mit max. 20 Cache-Einträgen. Unter dem Key “myKey” wird ein String in den Cache abgelegt und anschliessend 2x darauf zugegriffen. Beim zweiten Mal ist dieses Objekt “abgelaufen” und muss erneuert werden.
- GeneralCacheAdministrator cAdmin = new GeneralCacheAdministrator();
- cAdmin.setAlgorithmClass("com.opensymphony.oscache.base.algorithm.FIFOCache");
- cAdmin.setCacheCapacity(20);
- cAdmin.putInCache("myKey", "myObject");
- // first attempt to access the cache object
- try {
- // OK, object is not "older" than 2 seconds
- } catch (NeedsRefreshException nre) {
- }
- // Sleep 3 seconds
- try {
- // NOT OK, object is definately older than 2 seconds
- // --> NeedsRefreshException will be thrown
- } catch (NeedsRefreshException nre) {
- }
- cAdmin.destroy();
Ausgabe:
myObject
expired object:=myObject
Das Cachingframework bietet zusätzlich eine eigene JSP-Taglibrary und einen Servlet-Filter, der transparent für die Applikation ganze Seiten oder binäre Dateien cachen kann. Mehr dazu im 3. Teil.