oscache 使用总结

Posted on 2009-05-22 22:45 青果 阅读(1270) 评论(2)  编辑  收藏 所属分类: 技术点滴 

前阵子对公司网站进行了性能优化,其中,有一项就是使用OSCache添加页面的缓存,开始还不以为然,做完缓存后,发现服务器的负载大大减小了,看来还真不能小瞧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缓存的更多相关文章

  1. OSCache 缓存技术

    前言:OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能.OSCache是个一个广泛采用的高性能的J2EE缓存框架 ...

  2. OSCache缓存框架介绍

          OSCache是一种开放性的JSP定制标记应用,由OpenSymphony设计,提供了在现有JSP页面之内实现快速内存缓冲的功能. OSCache是个一个广泛采用的高性能的J2EE缓存框架 ...

  3. Java - Oscache 缓存

    1. web.xml 文件配置 <!-- 配置页面缓存 --> <filter> <filter-name>oscache</filter-name> ...

  4. 缓存初解(三)---Spring3.0基于注解的缓存配置+Ehcache和OScache

    本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中 ...

  5. Hibernate二级缓存原理

    缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache.缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快 ...

  6. web开发中对缓存的使用

    很久没有发表随笔了,最近工作不是太忙,抽点时间 给大家谈谈缓存吧 ; 在我从事web开发的几年实践中  接触了缓存技术 也是比较多的,在最初的 项目当中 我们用到 hibernate 的 一二级缓存, ...

  7. hibernate缓存清除(转)

    文章有点杂,这不是原文,谢谢贡献者 http://www.360doc.com/content/16/0413/16/32415095_550307388.shtml 一.hibernate一级缓存( ...

  8. Hibernate 的一级缓存和二级缓存总结

    缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache.缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快 ...

  9. 利用OsCache实现后端轮循

    轮循随处可见,最常用的是APP首页的一些促销活动,一两秒切换一张图片,让前端实现起来也不难.这里说下后端的轮循,实现原理是数组+缓存.将数组放入缓存,指定缓存失效时间,如果是在失效前从缓存中取数据,那 ...

随机推荐

  1. Web源码泄露总结

    Web源码泄露总结 背景 本文主要是记录一下常见的源码泄漏问题,这些经常在web渗透测试以及CTF中出现. 源码泄漏分类 .hg源码泄漏 漏洞成因: hg init的时候会生成.hg e.g.http ...

  2. django 框架下的路由分发

  3. Struts2 简单的增删改查

    1:主页面 <a href="emp-list">emp-list</a> <br> 然后到struts.xml文件中找到对应的emp-list ...

  4. 为什么不能在shell脚本中执行source /etc/profile或者source ~/.bashrc问题?

    执行脚本时,其中的命令是在一个子shell中执行的.子shell继承了父shell的环境变量,但无法修改他们,或者说所做的修改仅对子shell有效.

  5. appium-Android的驱动程序

    Appium Android Driver是Android设备的测试自动化工具.Appium Android驱动程序自动化原生的,混合的和移动的Web应用程序,在模拟器,仿真器和真实设备上进行测试.A ...

  6. 常用跨域方法总结(2)——CORS

    常用跨域方法总结(2)--CORS 上篇文章介绍了几种常用的跨域方法:常用跨域方法总结,本片为上一篇的补充,对比较重要的Cross Origin Resource Sharing详细介绍. CORS ...

  7. 【数据库】一篇文章搞掂:MySQL数据库

    一.安装 使用版本:5.7(2018/08/03 阿里云的云数据库最高支持5.7,所以这里考虑用5.7) 下载版本:MySQL Community Server 5.7.23 下载地址:https:/ ...

  8. 【C#、阿里云、Tomcat、XP系统】c#下使用.NET4.0中HttpWebRequest访问Tomcat中HTTPS项目时,在XP系统中超时

    情景: 1.使用Java开发的Web项目,部署在服务器Tomcat中 2.项目使用HTTPS,使用阿里云的PFX证书 阿里云推荐Tomcat配置如下 <Connector port=" ...

  9. (转)Spring Boot干货系列:(七)默认日志logback配置解析

    转:http://tengj.top/2017/04/05/springboot7/ 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的, ...

  10. ANSI 标准C 还定义了如下几个宏

    ANSI 标准C 还定义了如下几个宏:_LINE_ 表示正在编译的文件的行号_FILE_ 表示正在编译的文件的名字预处理名称意义#define 宏定义#undef 撤销已定义过的宏名#include ...