<!--
maxElementsInMemory="10"内存中的最大页面对象 eternal="false" timeToIdleSeconds="120" timeToIdleSeconds ,多长时间不访问该缓存,那么ehcache 就会清除该缓存。 timeToLiveSeconds="240" timeToLiveSeconds ,缓存的存活时间,从开始创建的时间算起。 overflowToDisk="true" 是否写入硬盘
--> <!-- Page and Page Fragment Caches -->
<cache name="show" maxElementsInMemory="10" eternal="false" timeToIdleSeconds="30" timeToLiveSeconds="60" overflowToDisk="true"> </cache> 这里只有一个cache,在ehcache即对应一个Ehcache对象,由CacheManager(单例模式实现)去管理,在CacheManager里用配置文件中的name可以获取Ehcache对象的实例。 代码如下: Ehcache cache = CacheManager.getInstance().getEhcache(cacheName); 展示页面有很多,比如一个商家一个展示页面,即show.action?showId=1后面的数字是可变的,在ehcache里面是用map去存储的,比如show.action?showId=1对应的key为: GET/show.actionshowId=1 GET为访问方式,把问号去掉了,ehcache内部也是这样存储的(类似map),这样保证了请求的页面在内存中的唯一性,获取也快。 既然key都知道了,删除就好了,直接 查看api文档Ehcache里有很多remove方法。示例代码如下: Ehcache cache = CacheManager.getInstance().getEhcache(cacheName); if (null == cache) { return; } cache.remove(key); key的获取就不用多说了吧,当更新一个页面的数据时,肯定知道数据的id,直接字符串处理下就可以获取key了,这里注意下就是,代码编写时,一般url里都有项目的名字,正式发布时,肯定没有,而前者在ehcache里生成key里有项目的名字,即: GET/projetName/show.actionshowId=1 所以最好用spring注入值,到时改也方便。 更详细的,请查看api文档和测试下,官方文档给的都是对象的,页面缓存的给的比较少,我也是查看源码才得出上面代码。 记一下,希望帮助有需求的人。
posts - 80, comments - 24, trackbacks - 0, articles - 32
Copyright © asdtiang