oscache2.1.1是一个很好的J2EE项目缓存解决方案,对于大数据量的查询,以及图片等都有很好的缓存作用,减轻了Web服务的负担,减少了数据库的大量IO开销。
但对于<%...%>这样的使用方式,毕竟在流行MVC实现业务逻辑和展示分离的今天,这样的使用方式就显得落伍了。改成标签库后,oscache还是照常使用么?错,这里特别指出的是oscache只是对于页面显示做了缓存,但对于我们jsp里面的提交后台处理逻辑的方式,就无法顺利的实现缓存作用了,还是没次都要去数据库查询。
怎么解决这个问题呢?因为对于<%...%>这样的原始方式,业务逻辑和显示都在其中,当把oscache标签库加在%前面时,便起到了“截流”,也就是截断了jsp提交的过程,也就是说每次遇到相同key值时,oscache就直接跳过,并把缓存中的内容返回客户端了。说到这里,大家应该都很明白怎样在业务逻辑和页面显示分离的情况下(很多人都是使用Struts遇到这种情况,而放弃使用oscache的),实现缓存功能了吧?
简单的方法就是,在Action里面判断jsp提交过来的参数,有没有与session中或application中相同的key值,如果有就直接返回,没有才去数据库查询。这样便实现了oscache中缓存的功能。