- 浏览: 117066 次
- 性别:
- 来自: 成都
文章分类
最新评论
二级缓存也称进程级的缓存或SessionFactory级的缓存,二级缓存可以被所有的session共享。二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存。一般二级缓存我们都是通过第三方产品来实现,其中有很多缓存产品,下面的就以Oscache来介绍一下二级缓存的使用。
Oscache缓存有几种,其中有:
对页面部分的缓存。
对整个页面的缓存。
对对象的缓存。
一、对部分页面的缓存。
1. 下载、解压缩OSCache
请到OSCache的主页http://www.opensymphony.com/oscache/download.html下载Oscache的最新版本,作者下载的是OSCache的最新稳定版本2.0。将下载后的Zip文件解压缩到c:oscache(后面的章节中将使用%OSCache_Home%来表示这个目录)目录下
2. 新建立一个web应用
3. 将主要组件%OSCache_Home%oscache.jar放入WEB-INF/lib目录
4. commons-logging.jar、commons-collections.jar的处理
OSCache组件用Jakarta Commons Logging来处理日志信息,所以需要commons-logging.jar的支持,请将%OSCache_Home%libcorecommons-logging.jar放入classpath(通常意味着将这个文件放入WEB-INFlib目录)
如果使用JDK1.3,请将%OSCache_Home%libcorecommons-collections.jar放入classpath,如果使用JDK1.4或以上版本,则不必了
5. 将oscache.properties、oscache.tld放入WEB-INF/class目录
%OSCache_Home%oscache.properties包含了对OSCache运行特征值的设置信息
%OSCache_Home%oscache.tld包含了OSCache提供的标签库的定义内容
6. 修改web.xml文件
在web.xml文件中增加下面的内容,增加对OSCache提供的taglib的支持:
XML/HTML代码
只需要通过上面简单的配置,我们就可以使用oscache对部分页面的缓存了,我们新建一个jsp页面,先在头部声明如下:
XML/HTML代码
其中的第一行是表示使用oscache的标签,底下的是我为了下面程序的需要导入的包。
然后在jsp页面当中加入oscache的标签,如下所示
XML/HTML代码
其中oscache的标签的一些属性含义如下:
key : 缓存的Key,可以是任何的字符,用来寻找缓存的内容用的.可以理解成HashMap中的Key.不能把2个要缓存的东东定义成一个名字,那样后一个会覆盖前一个的内容.默认情况,如果不指定Key的话,OSCache也会自动生成一个Key,规则是请求的URI+当前页面的Query String.scope : 缓存的范围.有2个, application和session.默认值是application.time : 缓存内容的时间.以秒为单位,默认是3600秒.到了指定的时间,就会刷新缓存内容.如果指定一个负数的话,意味着永远不会过期.duration : 也是用来指定缓存内容的时间,它和time属性只能是2选1,它的特点是可以用Simple Data Format 或者是ISO-8601进行日期格式化.cron : 用万年历的形式指定缓存内容何时过期的.它应用的Unix的万年历形式,如("0 * * * *")refresh : 是个Boolean值,如果是True的话,则不管前面提到的过期检查,都刷新.默认情况是false.mode : 设置这项为”silent”将防止把括起来的内容输出.这在你预加载缓存内容而不愿显示给用户看到时很有用.groups : 可以提供一个以逗号分割的组名称.如group="A, B".这将允许你以组的名义来操作他们,分组非常有用,比如你要缓存的内容正好需要另外一个应用程序的一部分或数据,当依赖的发生了改变,正好联动的可以使很多的组过期,进而使与组发生关联的缓存内容得到更新.language : 设置编码方式.refreshpolicyclass:指定自定义的类来处理缓存的内容什么时候过期.这个类需要从 refreshpolicyparam com.opensymphony.oscache.web.WebEntryRefreshPolicy继承.refreshpolicyparam : 它和上面的是联合使用的.是给refreshpolicyclass传任意的参数的.指定这项的话,就必须有refreshpolicyclass,否则就不起作用.
其中,我不得不把cron表达式多说几句.首先这五颗星的位置代表分,小时,一个月中的天,月,一周中的天分: 无疑问0~59.小时 : 无疑问 0~23.天(月) : 1~31月 : 1~12,用英文全称也可以.如January, April天(周): 0~6(0代表Sunday; 1代表Monday… 6代表Saturday)举个例子,比如我们想让缓存的内容在4月的晚上11:45分过期.我们可以这样来写"45 23 * April *".7、测试是否配置成功
要想测试是否成功非常的简单,首先在前面的jsp页面里面,得到文章的标题,即article.getTitle(),其是从数据库当中取得数据,假如我们是用Hibernate做数据持久化,那么我们可以把Hibernate的访问数据库的sql语句显示出来,当我们第一次访问jsp页面的时候,肯定显示查询数据库语句,这时候我们再次的访问这个jsp页面,如果这个时候访问明显变得快了,并且后台没有输出sql语句,那么说明缓存配置成功了。
二、对整个页面的缓存
要想对整个页面的缓存,首先的准备工作同上面一样,然后在web.xml文件里面加上
XML/HTML代码
其中下面的文章列表页面缓存的配置,就表示了对哪个请求做缓存,值得注意的是,这个缓存的配置一定要放在struts过滤器的前面。配置成功后,其测试的方法同上。
三,对象的缓存。
这里介绍的对象的缓存是通过和Spring的集成来实现的,其准备工作同上面一样,然后在spring的配置文件里面加上:
XML/HTML代码
其中cronExpression的含义同前面介绍的cron表达式是一样的,然后我们对一个对象的一个方法来作缓存,我们在ArticleService类里面加上:
Java代码
即在得到一个Article对象的方法上加上Cacheable注解,表示为其作缓存,其中的testCaching就是spring配置文件里面的testCaching。
通过上面的配置,我们在前端访问getArticle这个方法后,其得到的Article的实例就放到缓存里面了,要想测试是否成功,可以同上面介绍的相同方法来进行测试。
Oscache缓存有几种,其中有:
对页面部分的缓存。
对整个页面的缓存。
对对象的缓存。
一、对部分页面的缓存。
1. 下载、解压缩OSCache
请到OSCache的主页http://www.opensymphony.com/oscache/download.html下载Oscache的最新版本,作者下载的是OSCache的最新稳定版本2.0。将下载后的Zip文件解压缩到c:oscache(后面的章节中将使用%OSCache_Home%来表示这个目录)目录下
2. 新建立一个web应用
3. 将主要组件%OSCache_Home%oscache.jar放入WEB-INF/lib目录
4. commons-logging.jar、commons-collections.jar的处理
OSCache组件用Jakarta Commons Logging来处理日志信息,所以需要commons-logging.jar的支持,请将%OSCache_Home%libcorecommons-logging.jar放入classpath(通常意味着将这个文件放入WEB-INFlib目录)
如果使用JDK1.3,请将%OSCache_Home%libcorecommons-collections.jar放入classpath,如果使用JDK1.4或以上版本,则不必了
5. 将oscache.properties、oscache.tld放入WEB-INF/class目录
%OSCache_Home%oscache.properties包含了对OSCache运行特征值的设置信息
%OSCache_Home%oscache.tld包含了OSCache提供的标签库的定义内容
6. 修改web.xml文件
在web.xml文件中增加下面的内容,增加对OSCache提供的taglib的支持:
XML/HTML代码
<taglib> <taglib-uri>oscachetaglib-uri> <taglib-location>/WEB-INF/classes/oscache.tldtaglib-location> taglib>
只需要通过上面简单的配置,我们就可以使用oscache对部分页面的缓存了,我们新建一个jsp页面,先在头部声明如下:
XML/HTML代码
<%@ taglib uri="oscache" prefix="os"%> <%@ page import="com.eway.action.user.ArticleAction"%> <%@ page import="com.eway.entity.Article"%> <%@ page import="java.util.List;"%>
其中的第一行是表示使用oscache的标签,底下的是我为了下面程序的需要导入的包。
然后在jsp页面当中加入oscache的标签,如下所示
XML/HTML代码
<os:cache key="1" time="1800" scope="session"> <% ArticleAction action = new ArticleAction(); List<Article> list = action.testOscache(); for(int i = 0; i < list.size(); i++){ Article article = list.get(i); out.println(article.getTitle()); } %> os:cache>
其中oscache的标签的一些属性含义如下:
key : 缓存的Key,可以是任何的字符,用来寻找缓存的内容用的.可以理解成HashMap中的Key.不能把2个要缓存的东东定义成一个名字,那样后一个会覆盖前一个的内容.默认情况,如果不指定Key的话,OSCache也会自动生成一个Key,规则是请求的URI+当前页面的Query String.scope : 缓存的范围.有2个, application和session.默认值是application.time : 缓存内容的时间.以秒为单位,默认是3600秒.到了指定的时间,就会刷新缓存内容.如果指定一个负数的话,意味着永远不会过期.duration : 也是用来指定缓存内容的时间,它和time属性只能是2选1,它的特点是可以用Simple Data Format 或者是ISO-8601进行日期格式化.cron : 用万年历的形式指定缓存内容何时过期的.它应用的Unix的万年历形式,如("0 * * * *")refresh : 是个Boolean值,如果是True的话,则不管前面提到的过期检查,都刷新.默认情况是false.mode : 设置这项为”silent”将防止把括起来的内容输出.这在你预加载缓存内容而不愿显示给用户看到时很有用.groups : 可以提供一个以逗号分割的组名称.如group="A, B".这将允许你以组的名义来操作他们,分组非常有用,比如你要缓存的内容正好需要另外一个应用程序的一部分或数据,当依赖的发生了改变,正好联动的可以使很多的组过期,进而使与组发生关联的缓存内容得到更新.language : 设置编码方式.refreshpolicyclass:指定自定义的类来处理缓存的内容什么时候过期.这个类需要从 refreshpolicyparam com.opensymphony.oscache.web.WebEntryRefreshPolicy继承.refreshpolicyparam : 它和上面的是联合使用的.是给refreshpolicyclass传任意的参数的.指定这项的话,就必须有refreshpolicyclass,否则就不起作用.
其中,我不得不把cron表达式多说几句.首先这五颗星的位置代表分,小时,一个月中的天,月,一周中的天分: 无疑问0~59.小时 : 无疑问 0~23.天(月) : 1~31月 : 1~12,用英文全称也可以.如January, April天(周): 0~6(0代表Sunday; 1代表Monday… 6代表Saturday)举个例子,比如我们想让缓存的内容在4月的晚上11:45分过期.我们可以这样来写"45 23 * April *".7、测试是否配置成功
要想测试是否成功非常的简单,首先在前面的jsp页面里面,得到文章的标题,即article.getTitle(),其是从数据库当中取得数据,假如我们是用Hibernate做数据持久化,那么我们可以把Hibernate的访问数据库的sql语句显示出来,当我们第一次访问jsp页面的时候,肯定显示查询数据库语句,这时候我们再次的访问这个jsp页面,如果这个时候访问明显变得快了,并且后台没有输出sql语句,那么说明缓存配置成功了。
二、对整个页面的缓存
要想对整个页面的缓存,首先的准备工作同上面一样,然后在web.xml文件里面加上
XML/HTML代码
<filter> <filter-name>cacheFilterfilter-name> <filter-class>com.opensymphony.oscache.web.filter.CacheFilterfilter-class> <init-param> <param-name>timeparam-name> <param-value>3600param-value> init-param> <init-param> <param-name>scopeparam-name> <param-value>applicationparam-value> init-param> filter> <filter-mapping> <filter-name>cacheFilterfilter-name> <url-pattern>/user/article!list.dourl-pattern> filter-mapping>
其中下面的文章列表页面缓存的配置,就表示了对哪个请求做缓存,值得注意的是,这个缓存的配置一定要放在struts过滤器的前面。配置成功后,其测试的方法同上。
三,对象的缓存。
这里介绍的对象的缓存是通过和Spring的集成来实现的,其准备工作同上面一样,然后在spring的配置文件里面加上:
XML/HTML代码
<oscache:config configLocation="classpath:oscache.properties" id="cacheProvider" /> <oscache:annotations providerId="cacheProvider"> <oscache:caching id="testCaching" cronExpression="0 1 * * *" refreshPeriod="86400" /> <oscache:flushing id="testFlushing" /> oscache:annotations> <bean id="cacheManager" class="org.springmodules.cache.provider.oscache.OsCacheManagerFactoryBean"> <property name="configLocation" value="classpath:oscache.properties" /> bean>
其中cronExpression的含义同前面介绍的cron表达式是一样的,然后我们对一个对象的一个方法来作缓存,我们在ArticleService类里面加上:
Java代码
@Cacheable(modelId = "testCaching") public Article getArticle(long id);
即在得到一个Article对象的方法上加上Cacheable注解,表示为其作缓存,其中的testCaching就是spring配置文件里面的testCaching。
通过上面的配置,我们在前端访问getArticle这个方法后,其得到的Article的实例就放到缓存里面了,要想测试是否成功,可以同上面介绍的相同方法来进行测试。
发表评论
-
struts2 token拦截器
2014-01-14 20:44 866之前struts2解决token必须在每个action配置 ... -
JAVA中SELECT COUNT(*) FROM XXX得到的ResultSet行数
2013-06-05 16:37 1067/** * 测试SELECT COUNT(* ... -
数据库表与表连接的方式(内连接、外连接[左连接、右连接、全连接]、交叉连接)
2012-11-20 22:15 1156第一部分、查询理论 连接查询方式有: 内连接、外连接(左连 ... -
hibernate Restrictions 用法 查询
2012-11-20 20:57 668import hibernate classes impor ... -
hibernate Restrictions 用法 查询
2012-11-20 20:54 0import hibernate classes imp ... -
FreeMarker作为Struts2的视图
2012-07-27 17:09 724Struts使用FreeMarker作为其默认的模板技术,因此 ... -
spring security的标签库
2011-11-07 16:35 7539应用标签库:<%@ taglib prefix='sec ... -
STRUTS2 Convention零配置
2011-11-04 15:53 669从struts2.1开始,struts2不再推荐使用Codeb ... -
Hibernate - DetachedCriteria 的完整用法
2011-11-04 15:33 792Hibernate - DetachedCriteria 的完 ... -
struts2的struts.properties配置文件详解
2011-11-04 14:40 784struts.action.extensionThe U ... -
JPA @MappedSuperclass注解的使用说明
2011-10-31 17:51 856基于代码复用和模型分离的思想,在项目开发中使用JPA的@Map ... -
freemarker的国际化
2011-10-27 10:58 912起首在servlet中加上加载资料文件的代码 Local ... -
net.sf.json的使用
2011-10-26 17:26 2129需要jar包:ezmorph-1.0.6.jar,json-l ... -
FreeMarker设计指南
2011-10-18 17:57 729(1)模板 + 数据模型 = 输出 FreeMarke ... -
Freemarker中遍历List实例
2011-10-18 13:12 7660Freemarker中如何遍历List ... -
hibernate中lazy的使用
2011-10-18 11:49 719lazy,延迟加载 Lazy的有效期:只有 ... -
freemarker中使用struts2标签
2011-10-15 16:01 9421.将系统所需的标签库定义文件(也就是tld文件)复制到web ... -
Freemarker源码解析
2011-10-10 17:21 1036FreeMarker 自定义模版文 ... -
实体 Bean 注解
2011-10-06 15:36 1343一、 实体 Bean 每个持久化POJO类都是一个实体Bea ... -
Hibernate 实体类注解
2011-10-06 12:53 820Hibernate注解 1。@Entity(name=&qu ...
相关推荐
二级缓存插件OScache配置,很好的学习资料
2.3.1. Hibernate的二级缓存策略的一般过程如下: 1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。 2) 把获得的所有数据...
非常实用的一个例子,有关于缓存对象 list 或缓存地址或jsp或其它页面,在实例中都有,须望可以帮到大家
Hibernate OSCache缓存 Hibernate OSCache缓存
它可以使用不同的缓存实现,如 EhCache 、 JBossCache 、 OsCache 等 (二级缓存是缓存实体对象的) 还有一个类型的 CACHE 就是 QueryCache . 它的作用就是缓存一个 Query 以及 Query 返回对象的 Identifier 以及...
hibernate二级缓存也称为进程级的缓存或SessionFactory级的缓存。 二级缓存是全局缓存,它可以被所有的session共享。 二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存。 ...
oscache,java,缓存机制的使用
oscache缓存技术,压缩包中有详细代码及步骤
缓存技术 oscache-2.3.2.jar包下载
OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...
oscache缓存技术入门实例
OSCache是一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。 OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。...
Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。
1、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究
oscache-java缓存框架插件和安装教程,使用教程一步到位
javaweb做页面缓存常用,OSCache是一个工业级的J2EE缓存实现。OSCache不但能缓存java对象,还可以缓存页面,http请求和二进制内容,例如pdf文件等。通过应用OSCache,我们不但可以实现通常的Cache功能,还能够改善...
这里结合 天气预报的webservice 展示了OsCache框架的具体使用方法 项目可直接运行 ,代码简洁清晰
OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...
OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。 ...
Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。。。。