oscache缓存
OSCache 主要用于页面缓存,当然它也可用于数据层缓存,但数据层缓存一般使用ehcache比较成熟。OSCache对于更新较慢的页面(比如一天或半天更新一次)缓存效果比较好,能大幅降低数据库和服务器的压力,而且OSCache简单易用,是一个非常不错的缓存框架。
OSCache的配置和使用
一、oscache 环境搭建
1, 从 https://oscache.dev.java.net/files/documents/629/61427/oscache-2.4.1-full.zip 下载 oscache-2.4.1-full版本,并从压缩包中分别拷贝oscache-2.4.1.jar、oscache.properties、 oscache.tld放入本地项目的应用目录,如下:
$WEB-APP"WEB-INF"lib"oscache.jar
$WEB-APP"WEB-INF"classes"oscache.properties
$WEB-APP"WEB-INF"classes"oscache.tld
2, 在web.xml 中加入如下配置
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>
</taglib>
3, 如果需要日志输出,可在log4j.properties文件中加入如下配置
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=oscache.log
log4j.appender.file.MaxFileSize=100KB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[start]%d{yyyy/MM/dd/HH:mm:ss}
二、oscache.properties
主要配置
1,cache.memory = true
设置是否使用内存缓存
可设置为true 或者 false ,默认为true
2,cache.capacity =10000
设置缓存对象的最大数量值
默认是不限制,cache不会移走任何缓存内容,负数被当作不限制
3,cache.unlimited.disk
指定硬盘缓存是否要作限制,默认值为false
false的状况下,硬盘缓存容量将和cache.capacity的值相同
4,cache.path
指定硬盘缓存的路径,目录如果不存在将被建立,同时注意oscache应该要有权限写文件系统。
设置如:cache.path=d:""myapp""cache
5,cache.persistence.overflow.only
指定是否只有在内存不足的情况下才使用硬盘缓存。默认值false,推荐使用true如果内存cache被允许的话
三、标签参数介绍
使用了oscache:cache 的属性:
key 缓冲的key,可以是任何的字符串,也可以动态生成。在一个范围内必须唯一。默认使用请求的URI和请求的字符串(问号后面的部分)
scope 范围,有application和session, 默认为 application
time 缓冲内容的时间(秒),默认为1小时,3600秒,如果为-1则内容永远不过期
refresh 强制刷新缓存,false 或者true,可以使用此属性受动刷新需立即更新的数据
groups 设置分组,可以同组的缓冲数据进行控制
language 语言,默认为当前页面的语言
还有许多其他的属性,在这里不一一列举
四、oscache 基本用法
1,设置缓存
<%@ taglib uri="/WEB-INF/tlds/oscache.tld" prefix="oscache" %>
<oscache:cache key=”cacheKey” time=”300” scope=”application”>被缓存的列表 </oscache:cache> 其中,cacheKey和time可以自己动态构件,scope(缓存范围) 可以是ession、application
注意:cacheKey或者time如果是jsp表达式时,如:key=”<%=”string”+variable%>”而不是:key=”string<%=variable%>”,写法要注意,否则页面会报错
2,刷新缓存
<%@ taglib uri="/WEB-INF/tlds/oscache.tld" prefix="oscache" %>
<oscache:flush key=”cacheKey” scope=”application” />
3,分组缓存
<cache:flush group='b' scope='application'/>
<cache:cachekey='cacheKey_1' groups='a,b' duration='5s'>
这里面的内容被缓存到键值为cacheKey_1,组名为a和b的缓存中,正常情况下,每隔5秒钟刷新一 次,但受上面标签“<cache:flush group='b' scope='application'/>”的影响,它将随每次页面的刷新而刷新
</cache:cache>
<cache:cachekey='cacheKey_2' groups='a' duration='5s'>
这里面的内容被缓存到键值为cacheKey_2,组名为a的缓存中,它将每隔5秒中刷新一次
</cache:cache>
<cache:cachekey='cacheKey_3' duration='20s'>
这里面的内容被缓存到cacheKey_3,组a,b中,组是通过标签<cache: addgroup>而添加的,它也会受本页开头标签“<cache:flush group='b' scope='application'/>”的影响而随页面刷新而刷新
<cache:addgroup group='a'/>
<cache:addgroup group='b'/>
</cache:cache>
<cache:cachekey='cacheKey_4' duration='20s'>
这里面的内容被缓存到cacheKey_4,组a,b中,组是通过标签<cache: addgroups>而添加的,它也会受本页开头标签“<cache:flush group='b' scope='application'/>”的影响而随页面刷新而刷新
<cache:addgroups groups='a,b'/>
</cache:cache>
五、参考资料
1,oscache-2.4.1-full 中的demo,下在地址:
https://oscache.dev.java.net/files/documents/629/61427/oscache-2.4.1-full.zip
2,oscache API:http://www.opensymphony.com/oscache/api/
oscache缓存的更多相关文章
- OSCache 缓存技术
前言:OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能.OSCache是个一个广泛采用的高性能的J2EE缓存框架 ...
- OSCache缓存框架介绍
OSCache是一种开放性的JSP定制标记应用,由OpenSymphony设计,提供了在现有JSP页面之内实现快速内存缓冲的功能. OSCache是个一个广泛采用的高性能的J2EE缓存框架 ...
- Java - Oscache 缓存
1. web.xml 文件配置 <!-- 配置页面缓存 --> <filter> <filter-name>oscache</filter-name> ...
- 缓存初解(三)---Spring3.0基于注解的缓存配置+Ehcache和OScache
本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中 ...
- Hibernate二级缓存原理
缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache.缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快 ...
- web开发中对缓存的使用
很久没有发表随笔了,最近工作不是太忙,抽点时间 给大家谈谈缓存吧 ; 在我从事web开发的几年实践中 接触了缓存技术 也是比较多的,在最初的 项目当中 我们用到 hibernate 的 一二级缓存, ...
- hibernate缓存清除(转)
文章有点杂,这不是原文,谢谢贡献者 http://www.360doc.com/content/16/0413/16/32415095_550307388.shtml 一.hibernate一级缓存( ...
- Hibernate 的一级缓存和二级缓存总结
缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache.缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快 ...
- 利用OsCache实现后端轮循
轮循随处可见,最常用的是APP首页的一些促销活动,一两秒切换一张图片,让前端实现起来也不难.这里说下后端的轮循,实现原理是数组+缓存.将数组放入缓存,指定缓存失效时间,如果是在失效前从缓存中取数据,那 ...
随机推荐
- js 输入整数
1.我用 /^\+?[1-9][0-9]*$/ 貌似不对(小数也可以输入) 2.输入整数 n = /^[1-9]\d*$/; . -]\d*$/; //判断字符串是否为数字 if (!value) ...
- JVM内存模型及GC回收算法
该篇博客主要对JVM内存模型以及GC回收算法以自己的理解和认识做以记录. 内存模型 GC垃圾回收 1.内存模型 从上图可以看出,JVM分为 方法区,虚拟机栈,本地方法栈,堆,计数器 5个区域.其中最为 ...
- JavaSE---多线程---线程通信
1.概述 1.1 由于多线程之间共享父进程的资源,可以非常方便的共享数据,这才是多个线程通信的最好方式: 当然Java也提供了协调线程运行的支持: 1.2 线程的执行具有随机性,在实际业务中,比如有2 ...
- securityDemo依赖
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit ...
- 【软工项目Beta阶段】博客目录
绝不划水队Beta冲刺阶段博客目录 一.Scrum Meeting 第十周会议记录 第十一周会议记录 二.测试报告 Beta阶段测试报告 三.习得的软工原理/方法/技能? (1)在进行OUC-Mark ...
- paper 139:qt超强绘图控件qwt - 安装及配置
qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式 ...
- AcWing 214. Devu和鲜花 (容斥)打卡
Devu有N个盒子,第i个盒子中有AiAi枝花. 同一个盒子内的花颜色相同,不同盒子内的花颜色不同. Devu要从这些盒子中选出M枝花组成一束,求共有多少种方案. 若两束花每种颜色的花的数量都相同,则 ...
- sql格式化工具推荐
还在为上百行甚至上千行冗余的sql烦恼吗?这里推荐一款在线美化sql的工具 工具地址:http://www.matools.com/sql 怎么样,黑屏界面是不是带有满满的黑科技感? 该工具支持ora ...
- python selenium模拟登陆163邮箱。
selenium是可以模拟浏览器操作. 有些爬虫是异步加载的,通过爬取网页源码是得不到需要的内容.所以可以模拟浏览器去登陆该网站进行爬取操作. 需要安装selenium通过pip install xx ...
- NOIp2018 爆零记
几个月没动博客了,原以为NOIp之后能有个喜报让我重新更博的 我就讲讲自己的爆零经历吧 Day 0: 洛谷签到第99天,明天签到第100天, 吉利得很(flag已立) 去年第一次参加NOIp,那次Da ...