浏览 1971 次
锁定老帖子 主题:使用OSCache进行简单的缓存
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-31
在目前流行的三种开源的缓存工具中,OSCache的配置和使用应给是最简单的了,它主要是针对页面级的配置,EHCache主要针对对象级的缓存,MemCached应该是比较完整的了。接下来我们简单的讲一下在你的系统中怎样快速的应用上OSCache。只需简单的两步。 第一步:加载oscache.properties文件,默认放到src目录下。下面是oscache.xml的默认配置。你只需简单的去掉一些注释就可以用了。 # CACHE IN MEMORY # # If you want to disable memory caching, just uncomment this line. # # cache.memory=false # CACHE KEY # # This is the key that will be used to store the cache in the application # and session scope. # # If you want to set the cache key to anything other than the default # uncomment this line and change the cache.key # # cache.key=__oscache_cache # USE HOST DOMAIN NAME IN KEY # # Servers for multiple host domains may wish to add host name info to # the generation of the key. If this is true, then uncomment the # following line. # # cache.use.host.domain.in.key=true # CACHE LISTENERS # # These hook OSCache events and perform various actions such as logging # cache hits and misses, or broadcasting to other cache instances across a cluster. # See the documentation for further information. # # cache.event.listeners=com.opensymphony.oscache.plugins.clustersupport.JMSBroadcastingListener, \ # com.opensymphony.oscache.extra.CacheEntryEventListenerImpl, \ # com.opensymphony.oscache.extra.CacheMapAccessEventListenerImpl, \ # com.opensymphony.oscache.extra.ScopeEventListenerImpl, \ # com.opensymphony.oscache.extra.StatisticListenerImpl # CACHE PERSISTENCE CLASS # # Specify the class to use for persistence. If you use the supplied DiskPersistenceListener, # don't forget to supply the cache.path property to specify the location of the cache # directory. # # If a persistence class is not specified, OSCache will use memory caching only. # # cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener # cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.HashDiskPersistenceListener # CACHE OVERFLOW PERSISTENCE # Use persistent cache in overflow or not. The default value is false, which means # the persistent cache will be used at all times for every entry. true is the recommended setting. # # cache.persistence.overflow.only=true # CACHE DIRECTORY # # This is the directory on disk where caches will be stored by the DiskPersistenceListener. # it will be created if it doesn't already exist. Remember that OSCache must have # write permission to this directory. # # Note: for Windows machines, this needs \ to be escaped # ie Windows: # cache.path=c:\\myapp\\cache # or *ix: # cache.path=/opt/myapp/cache # # cache.path=c:\\app\\cache # CACHE ALGORITHM # # Default cache algorithm to use. Note that in order to use an algorithm # the cache size must also be specified. If the cache size is not specified, # the cache algorithm will be Unlimited cache. # # cache.algorithm=com.opensymphony.oscache.base.algorithm.LRUCache # cache.algorithm=com.opensymphony.oscache.base.algorithm.FIFOCache # cache.algorithm=com.opensymphony.oscache.base.algorithm.UnlimitedCache # THREAD BLOCKING BEHAVIOR # # When a request is made for a stale cache entry, it is possible that another thread is already # in the process of rebuilding that entry. This setting specifies how OSCache handles the # subsequent 'non-building' threads. The default behaviour (cache.blocking=false) is to serve # the old content to subsequent threads until the cache entry has been updated. This provides # the best performance (at the cost of serving slightly stale data). When blocking is enabled, # threads will instead block until the new cache entry is ready to be served. Once the new entry # is put in the cache the blocked threads will be restarted and given the new entry. # Note that even if blocking is disabled, when there is no stale data available to be served # threads will block until the data is added to the cache by the thread that is responsible # for building the data. # # cache.blocking=false # CACHE SIZE # # Default cache size in number of items. If a size is specified but not # an algorithm, the cache algorithm used will be LRUCache. # cache.capacity=1000 # CACHE UNLIMITED DISK # Use unlimited disk cache or not. The default value is false, which means # the disk cache will be limited in size to the value specified by cache.capacity. # # cache.unlimited.disk=false # JMS CLUSTER PROPERTIES # # Configuration properties for JMS clustering. See the clustering documentation # for more information on these settings. # #cache.cluster.jms.topic.factory=java:comp/env/jms/TopicConnectionFactory #cache.cluster.jms.topic.name=java:comp/env/jms/OSCacheTopic #cache.cluster.jms.node.name=node1 # JAVAGROUPS CLUSTER PROPERTIES # # Configuration properites for the JavaGroups clustering. Only one of these # should be specified. Default values (as shown below) will be used if niether # property is set. See the clustering documentation and the JavaGroups project # (www.javagroups.com) for more information on these settings. # #cache.cluster.properties=UDP(mcast_addr=231.12.21.132;mcast_port=45566;ip_ttl=32;\ #mcast_send_buf_size=150000;mcast_recv_buf_size=80000):\ #PING(timeout=2000;num_initial_members=3):\ #MERGE2(min_interval=5000;max_interval=10000):\ #FD_SOCK:VERIFY_SUSPECT(timeout=1500):\ #pbcast.NAKACK(gc_lag=50;retransmit_timeout=300,600,1200,2400,4800;max_xmit_size=8192):\ #UNICAST(timeout=300,600,1200,2400):\ #pbcast.STABLE(desired_avg_gossip=20000):\ #FRAG(frag_size=8096;down_thread=false;up_thread=false):\ #pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;print_local_addr=true) #cache.cluster.multicast.ip=231.12.21.132 第二步:在web.xml进行一些简单的配置,oscache提供了强大的标签。主要是针对jsp的,如果项目中需把oscache.tld放到WEB-INF/classes下,在再web.xml中配置一下。 <!--oscache taglib --> <jsp-config> <taglib> <taglib-uri>oscache</taglib-uri> <taglib-location> /WEB-INF/classes/oscache.tld </taglib-location> </taglib> </jsp-config> 在jsp中应用的话,还需简单的引入。<%@ taglib uri="oscache" prefix="cache" %> 具体的应用:<cache:cache key="testcache"></cache:cache>。 以上是针对具体的页面的配置步骤。如果想针对某一页面的类型进行配置,可以利用过滤器来配置。比如我们想对以*.ftl和*.jsp的页面进行缓存的话,我们只需这样简单的配置在web.xml中。 <!-- OScacheFilter --> <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>application</param-value> </init-param> </filter> <filter-mapping> <filter-name>CacheFilter</filter-name> <url-pattern>*.ftl</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CacheFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <!-- OScacheFilter --> 如果想对某一访问的路径action进行缓存的话,我们可以这样做,在一个jsp文件中简单的加上: <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ taglib uri="oscache" prefix="cache" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <oscache:cache> <jsp:include page ="/view.do"/> </oscache:cache> </body> </html> OSCache的配置比较活的,你可以根据你的情况进行相应的配置。它主要是针对页面级的对象。虽然它专门为jsp提供了强大的标签支持,并不意味着不能对ftl,php进行缓存的,我们可以用jsp中的标签来嵌套我们的返回不同的数据页面。比如上面的/view.do可以返回的是一个ftl页面,照样可以缓存。 要想对缓存有更深入的了解,可以查看源码,可能会帮助你更好的理解它的工作机制和原理。 简单的说,缓存就是Map<key,value>,创建缓存就是添加一个map,使用就是通过key取value. 写的有不当之处,敬请提出,以待改正。避免初学者误解。Thank you. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |