用oscache做url地址页面一级的缓存,可以大大减少应用对数据库的访问,提高响应的效率,要想将oscache应用到程序中是非常方便的,只要配置一下webapps目录下的web.xml,值得注意的是OSCache的filter应该放在struts或webwork 的Action的前面,这样用户触发一个url地址就不会经过框架语言,才会起到完全缓存的效果,比如我用的是webwork框架,在web.xml中的配置如下:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>
xwap.common.filter.SetCharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>osCache</filter-name>
<filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
<init-param>
<param-name>time</param-name>
<param-value>3600</param-value>
</init-param>
<init-param>
<param-name>scope</param-name>
<param-value>application</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>osCache</filter-name>
<url-pattern>/query/defaultQuery.action</url-pattern>
</filter-mapping>
<filter>
<filter-name>webwork</filter-name>
<filter-class>
com.opensymphony.webwork.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
需要注意的是:
1.在tomcat下来进行配置时,<url-pattern>/query/defaultQuery.action</url-pattern>中不支持" * ",而在resin就可以这样来写,<url-pattern>/query/ *.action</url-pattern>
2.如果你的lib包下有两个版本的oscache,那么在页面上,用到缓存的页面会出现乱码,把其中一个版本删除掉就可以了.
3.如果在web.xml中用到了taglib
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/lib/oscache-2.3.2.jar</taglib-location>
</taglib>
要确保这个包的名称正确,不然会抛出TldLocationCache错误
如果还有不明白的地方,可以参考OSCache的官方网站: OSCache - OSCache