专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
ImportNew  ·  神操作!中国工程师拖 4 箱硬盘 80TB ... ·  昨天  
Java编程精选  ·  Controller层代码这么写,简洁又优雅! ·  2 天前  
芋道源码  ·  实现 Springboot 程序加密,禁止 ... ·  昨天  
芋道源码  ·  手把手教你实现一个Java Agent ·  2 天前  
51好读  ›  专栏  ›  ImportNew

ehcache 实现页面整体缓存和页面局部缓存

ImportNew  · 公众号  · Java  · 2017-01-21 22:59

正文

请到「今天看啥」查看全文



它ehcache-web模块下页面缓存Filter的一个简单实现,适用于可以压缩的Http响应(response),如HTML、XML、JSON等。它会使用通过CacheManager的静态方法create创建的单例CacheManager,这样如果之前已经存在CacheManager的实例了的话,这里就会直接拿来用,而不会再创建了。所以这里一般默认情况下会取类根路径下的ehcache.xml文件来创建CacheManager,但如果我们的项目中整合了Ehcache和Spring,且在Spring配置文件中指定的Ehcache的配置文件不是默认位置的话,Spring将使用指定的配置文件优先初始化CacheManager,这样SimplePageCachingFilter中要使用CacheManager时就不会再初始化了,而是直接使用Spring初始化的。页面缓存使用的key是通过SimplePageCachingFilter的calculateKey()方法获取的。其内部逻辑是获取请求时的URI及后面的查询字符串作为key进行返回,如“/user/index.jsp?name=abc”,这使得它的应用范围非常广。它不依赖于主机名和端口号,这将使得它同样适用于有多个域或多个端口请求同样内容的情况。如果有需要,我们可以对calculateKey方法进行重写,从而实现我们自己的计算key的逻辑。这个是很有必要的,因为在项目中很多页面都使用AJAX,为保证JS请求的数据不被浏览器缓存,每次请求可能都会是不同的数参数。如果使用 SimplePageCachingFilter,那么每次生成的key都不一样,缓存就没有意义了。这种情况下,我们就会覆写 calculateKey()方法。


2 .SimpleCachingHeadersPageCachingFilter 提供HTTP缓存头信息,这个不介绍了用的很少。


3 .SimplePageFragmentCachingFilter


SimplePageCachingFilter适用于缓存整个页面的情况,如果只需要缓存某一个片段,如使用jsp:include包含的部分,这个时候就需要用SimplePageFragmentCachingFilter。


第一部分是页面整体缓存


第一步:首先配置ehcache.xml指定我们的SimplePageCachingFilter缓存  ,这里指定页面缓存的生命周期是60秒,还有timeToIdleSeconds的时间爱你是120秒,这里要注意下不要设置太长时间


maxElementsInMemory="10"

maxElementsOnDisk="10"

eternal="false"

overflowToDisk="false"

timeToIdleSeconds="120"

timeToLiveSeconds="60"

memoryStoreEvictionPolicy="LFU">


第二步 : 在web.xml中添加页面缓存过滤器PageCachingFilter。


注意: 如果我们在ehcache.xml中命名的页面缓存名字为SimplePageCachingFilter时,我们再web.xml中的页面缓存过滤器的cacheName是可以不用定义的,因为它是默认的;如果不是SimplePageCachingFilter,这是我就必须指定cacheName了。


还有一点url-pattern的指定应该是/pageCacheController/testPageCache.do,而不是/testPageCache.do这个。


PageCachingFilter

net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter

cacheName

SimplePageCachingFilter







请到「今天看啥」查看全文