zoukankan      html  css  js  c++  java
  • OSCache页面缓存的使用

    完成项目时,为了减少对数据库的频繁操作,引出了缓存,缓存分为以下几种:

    1.一级缓存

      一级缓存的存储域是session,作用于单个的dao

    2.二级缓存

      二级缓存的存储域是sessionFactory,作用于全局,对每个dao都产生作用

    3.分布式缓存

      分布式缓存应用于互联网高并发项目中,把缓存放在一个专门的位置,可以解决内存的浪费问题以及减少服务器压力,使用一级缓存或二级缓存时会把缓存放在他们自己的服务器上,简单来说,使用多个服务器的项目,每个服务器除了完成自己的业务时还要保存缓存,这样就造成了服务器内存浪费,严重加重服务器压力。

    4.页面缓存

      页面缓存的存储位置可以理解为存储在"页面",相比分布式缓存,页面缓存性能更好,缺点是由于缓存的存在可能造成数据的不同步问题。

    使用OSCache需要的jar

    oscache.jar

    libcommons-logging.jar

    配置步骤: 第一步:把上述两个jar文件放置在WEB-INF/lib目录下. 第二步:把oscache安装目录下的/etc/oscache.properties 文件放入 /WEB-INF/classes目录.开发阶段,我们可以把该文件放置在src目录.

    我们使用Oscache的标签<oscache></oscache>来进行页面的局部缓存.使用方法如下:

    <%@taglib uri="http://www.opensymphony.com/oscache" prefix=“oscache"%>

    <oscache:cache>

      <%=new Date() %>

    </oscache:cache>

    缓存的key将以请求的URI+查询字串组成,如果你访问/oscache/index.jsp?name=ttt和/oscache/index.jsp?name=ppp将得到两份缓存。缓存默认存放在application范围,缓存时间默认为3600秒,即1小时.

    <oscache:cache key=“name”>

      name=${param.name}

    </oscache:cache>

    这时候缓存将以name为key,不再是请求的URI+查询字串组成,所以如果你访问/oscache/index.jsp?name=ttt和/oscache/index.jsp?name=ppp将得到一份缓存。 <oscache:cache key="name" scope="session">

      name=${param.name}

    </oscache:cache>

    缓存范围设置为session,这时候缓存保存在用户的session中,如果用户的把浏览器关闭,再重新打开一个新浏览器,原来缓存的内容将不存在。

    <oscache:cache key="name" time="10">

      name=${param.name}

    </oscache:cache>

    上面设置了缓存的时间为10秒,超过10秒后,缓存的内容将失掉。

    <oscache:cache key="name" time="60" refresh="${param.refresh}">

      name=${param.name}

    </oscache:cache>

    refresh为true将会导致缓存的内容过期而被清除,简单地说,该属性为true用于清除缓存。

    人为管理缓存<flush />标签:

    <oscache:flush scope="application" />

    清除application范围内的所有缓存

    <oscache:flush scope="session" key="foobar" />

    清除session范围内的key为foobar的缓存。

    <oscache:flush scope="application" group="currencyData" />

    清除application范围内组名为currencyData内的所有缓存。

    页面全局缓存将使用Filter实现:

    <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>7200</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>*.jsp</url-pattern>
    </filter-mapping>

    cache.memory=true 指定是否使用内存缓存,默认值为true,即使用内存缓存。 cache.capacity 指定缓存的容量,默认的容量是无限的。我们可以为它设置缓存数量,如: cache.capacity=100000 如果我们要使用硬盘缓存,可以这样设置:

    cache.memory=false

    cache.path=d:\cache (指定,缓存保存的路径,注意:路径应采用双符)

    cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener cache.persistence.class用于设置持久化类。

  • 相关阅读:
    sql server 纵横表的转换
    url参数的编码解码Demo
    SqlServer 列的增加和删除
    asp.net下ajax.ajaxMethod使用方法(转)
    js中document.all 的用法
    cookie跨域,跨目录访问及单点登录。
    错误记录:html隐藏域的值存字符串时出错
    .NET下用C#实现邮箱激活功能
    js与C#服务端 json数据交互
    sqlserver数据可空插入报错
  • 原文地址:https://www.cnblogs.com/lm970585581/p/7457914.html
Copyright © 2011-2022 走看看