ehcach SimplePageCachingFilter 页面缓存

Ehcach     SimplePageCachingFilter 页面缓存

作者:韩飞

日期:2008/11/19

       为了能将学过的东西归纳总结,开始试验着写一些文档,看过张荣华的文章后,参考着写一下

       如果一个应用中的80%的时间在访问20%的数据时,那么这时候就应该考虑使用缓存了。在一个网站中访问最多的可能就是首页了,我们可以考虑给首页做一个页面缓存。主页的缓存策略应该是在一个固定时间内不变的,比如说2分钟更新一次,那么这个缓存应该做在什么地方呢?

       假设你的应用结构是page—filter—action—service—dao—db,这个过程中的每个地方都一个做缓存,根据页面缓存的特征,应该把页面缓存做在尽量靠近客户端的地方,就是pagefilter之间。这样的优点就是在用户第一次请求之后,页面被缓存,第二个用户再来请求时,走到filter这个请求就结束了。无需在走后面的action—service—dao—db,这样就减轻了服务器的压力,客户端的页面响应速度也加快

       下面用ehcache来做到这一点

      

在应用的classes的根目录中放入ehcache.xml

加入下面的配置片段:

        <cache name="SimplePageCachingFilter"

           maxElementsInMemory="10"

           maxElementsOnDisk="10"

           eternal="false"

           overflowToDisk="true"

           diskSpoolBufferSizeMB="20"

           timeToIdleSeconds="10"

           timeToLiveSeconds="10"

           memoryStoreEvictionPolicy="LFU"

            />

SimplePageCachingFilter 是缓存的名字

maxElementsInMemory     表示内存中SimplePageCachingFilter缓存中元素的最大数量是10

maxElementsOnDisk             是指持久化的该缓存元素的硬盘是的最大数量

eternal=false                        意味着该缓存会死亡

overflowToDisk=true           意味着该缓存中的元素超过限制是,就把这些元素持化到硬盘上,如果orerflowToDisk=false那么maxElementsOnDisk的设置就没有意义了

timeToIdleSeconds               多长时间不访问该缓存,那么ehcache就会清除改缓存

timeToLiveSeconds              缓存的存活时间,从开始创建的时间算起

memoryStoreEvictionPolicy=LFU

       1 FIFO first in first out ,这个是大家最熟的,先进先出,不多讲了

 

       2 LFU Less Frequently Used ,就是上面例子中使用的策略,直白一点就是讲一直以来最少被使用的。如上面所讲,缓存的元素有一个hit 属性,hit 值最小的将会被清出缓存。

 

       3 LRU Least Recently Used ,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。

      

       配置SimplePageCachingFilter web.xml中加入

              < filter >

           < filter-name > indexCacheFilter <filter-name >

           < filter-class >         net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter

           <filter-class >

    <filter >

 

    < filter-mapping >

       < filter-name > indexCacheFilter< filter-name >

       < url-pattern > *.do <url-pattern >

<filter-mapping >

 

    好了,如果你的页面正好也需要用到页面缓存,不防可以考虑一下ehcache ,因为它实在是非常简单,而且易用。

ehcache 是一个非常轻量级的缓存实现,而且从1.2 之后就支持了集群,目前的最新版本是1.3 ,而且是hibernate 默认的缓存provider 。虽然本文是介绍的是ehcache 对页面缓存的支持,但是ehcache 的功能远不止如此,当然要使用好缓存,对JEE 中缓存的原理,使用范围,适用场景等等都需要有比较深刻的理解,这样才能用好缓存,用对缓存。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值