使用OSCache进行简单的缓存
2008-03-31 10:54
337 查看
[align=center]使用OSCache进行简单的缓存[/align]
[align=left]在目前流行的三种开源的缓存工具中,OSCache的配置和使用应给是最简单的了,它主要是针对页面级的配置,EHCache主要针对对象级的缓存,MemCached应该是比较完整的了。接下来我们简单的讲一下在你的系统中怎样快速的应用上OSCache。只需简单的两步。[/align]
[align=left] 第一步:加载oscache.properties文件,默认放到src目录下。下面是oscache.xml的默认配置。你只需简单的去掉一些注释就可以用了。[/align]
[align=left] # CACHE IN MEMORY
#
# If you want to disable memory caching, just uncomment this line.
#
# cache.memory=false[/align]
[align=left]
# 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[/align]
[align=left]
# 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[/align]
[align=left]
# 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[/align]
[align=left]
# 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[/align]
[align=left]# 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[/align]
[align=left]# 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[/align]
[align=left]
# 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[/align]
[align=left]# 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[/align]
[align=left]# 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[/align]
[align=left]
# 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[/align]
[align=left]
# 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[/align]
[align=left]
# 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
[/align]
[align=left]第二步:在web.xml进行一些简单的配置,oscache提供了强大的标签。主要是针对jsp的,如果项目中需把oscache.tld放到WEB-INF/classes下,在再web.xml中配置一下。
[/align]
[align=left]<!--oscache taglib -->
<jsp-config>
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>
/WEB-INF/classes/oscache.tld
</taglib-location>
</taglib>
</jsp-config>[/align]
[align=left]在jsp中应用的话,还需简单的引入。<%@ taglib uri="oscache" prefix="cache" %>[/align]
[align=left]具体的应用:<cache:cache key="testcache"></cache:cache>。[/align]
[align=left] 以上是针对具体的页面的配置步骤。如果想针对某一页面的类型进行配置,可以利用过滤器来配置。比如我们想对以*.ftl和*.jsp的页面进行缓存的话,我们只需这样简单的配置在web.xml中。[/align]
[align=left]<!-- 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 -->[/align]
[align=left] [/align]
[align=left]如果想对某一访问的路径action进行缓存的话,我们可以这样做,在一个jsp文件中简单的加上:[/align]
[align=left]<%@ 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>[/align]
[align=left] OSCache的配置比较活的,你可以根据你的情况进行相应的配置。它主要是针对页面级的对象。虽然它专门为jsp提供了强大的标签支持,并不意味着不能对ftl,php进行缓存的,我们可以用jsp中的标签来嵌套我们的返回不同的数据页面。比如上面的/view.do可以返回的是一个ftl页面,照样可以缓存。[/align]
[align=left] 要想对缓存有更深入的了解,可以查看源码,可能会帮助你更好的理解它的工作机制和原理。[/align]
[align=left] 简单的说,缓存就是Map<key,value>,创建缓存就是添加一个map,使用就是通过key取value.[/align]
[align=left] 写的有不当之处,敬请提出,以待改正。避免初学者误解。Thank you.[/align]
[align=left] [/align]
[align=left]在目前流行的三种开源的缓存工具中,OSCache的配置和使用应给是最简单的了,它主要是针对页面级的配置,EHCache主要针对对象级的缓存,MemCached应该是比较完整的了。接下来我们简单的讲一下在你的系统中怎样快速的应用上OSCache。只需简单的两步。[/align]
[align=left] 第一步:加载oscache.properties文件,默认放到src目录下。下面是oscache.xml的默认配置。你只需简单的去掉一些注释就可以用了。[/align]
[align=left] # CACHE IN MEMORY
#
# If you want to disable memory caching, just uncomment this line.
#
# cache.memory=false[/align]
[align=left]
# 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[/align]
[align=left]
# 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[/align]
[align=left]
# 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[/align]
[align=left]
# 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[/align]
[align=left]# 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[/align]
[align=left]# 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[/align]
[align=left]
# 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[/align]
[align=left]# 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[/align]
[align=left]# 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[/align]
[align=left]
# 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[/align]
[align=left]
# 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[/align]
[align=left]
# 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
[/align]
[align=left]第二步:在web.xml进行一些简单的配置,oscache提供了强大的标签。主要是针对jsp的,如果项目中需把oscache.tld放到WEB-INF/classes下,在再web.xml中配置一下。
[/align]
[align=left]<!--oscache taglib -->
<jsp-config>
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>
/WEB-INF/classes/oscache.tld
</taglib-location>
</taglib>
</jsp-config>[/align]
[align=left]在jsp中应用的话,还需简单的引入。<%@ taglib uri="oscache" prefix="cache" %>[/align]
[align=left]具体的应用:<cache:cache key="testcache"></cache:cache>。[/align]
[align=left] 以上是针对具体的页面的配置步骤。如果想针对某一页面的类型进行配置,可以利用过滤器来配置。比如我们想对以*.ftl和*.jsp的页面进行缓存的话,我们只需这样简单的配置在web.xml中。[/align]
[align=left]<!-- 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 -->[/align]
[align=left] [/align]
[align=left]如果想对某一访问的路径action进行缓存的话,我们可以这样做,在一个jsp文件中简单的加上:[/align]
[align=left]<%@ 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>[/align]
[align=left] OSCache的配置比较活的,你可以根据你的情况进行相应的配置。它主要是针对页面级的对象。虽然它专门为jsp提供了强大的标签支持,并不意味着不能对ftl,php进行缓存的,我们可以用jsp中的标签来嵌套我们的返回不同的数据页面。比如上面的/view.do可以返回的是一个ftl页面,照样可以缓存。[/align]
[align=left] 要想对缓存有更深入的了解,可以查看源码,可能会帮助你更好的理解它的工作机制和原理。[/align]
[align=left] 简单的说,缓存就是Map<key,value>,创建缓存就是添加一个map,使用就是通过key取value.[/align]
[align=left] 写的有不当之处,敬请提出,以待改正。避免初学者误解。Thank you.[/align]
[align=left] [/align]
相关文章推荐
- 使用OSCache进行简单的缓存
- 使用开源项目OScache进行页面的缓存应用
- 使用SDWebImage进行简单的图片下载和缓存
- 使用Struts2和jQuery EasyUI实现简单CRUD系统(六)——复选框进行多选删除操作
- 使用WeakReference 与 ReferenceQueue 简单实现弱引用缓存
- Android中使用Pull解析器解析xml文件+进行简单的单元测试
- 使用shiro+ehcache进行缓存权限数据
- 【Redis缓存机制】2.Redis安装和简单使用
- 学习淘淘商城第十九课(搭建单机版FastDFS图片服务器以及使用FastDFS-Client客户端进行简单测试)
- 以太坊笔记 使用 Browser-solidity 在 Go-Ethereum1.7.2 上进行简单的智能合约部署
- 使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现
- 使用JMeter进行一次简单的带json数据的post请求测试,json可配置参数
- 使用LoadRunner进行性能测试的简单步骤
- 使用MYSQL对数据库,表进行一些简单的CRUD操作
- Android 之NDK实战系列(3)——Android Studio下使用lame 进行简单的转换
- Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强
- 使用异或进行简单的密码加密(JAVA实现)
- 使用 numpy 和 PIL 进行简单的图像处理
- 使用ImageMagick和Tesseract进行简单数字图像识别
- 使用PostSharp进行AOP框架设计:一个简单的原型