`
01404421
  • 浏览: 226904 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Oscache CacheFilter缓存url和控制刷新的简单实现

阅读更多

使用SSH做成的网站,首页如何载入数据是一个问题,既要考虑到及时性和性能也要考虑到SEO,javaeye上也有很多相关的讨论。比如问答版块中的:

如何处理网站首页中的各个子栏目或频道?

http://www.iteye.com/problems/27503

SSH框架的网站首页是怎样初始化的??

http://www.iteye.com/problems/27503

看了一上午,小总结了一下,无非是以下几种方法:

1.使用首页静态化

2.使用ajax动态调用数据库内容

3.部分静态和部分动态调用

4.使用缓存。

根据我们的需求,我使用缓存首页,具体使用Oscache的CacheFilter缓存首页,具体配置记录如下:

1.引入Oscache的jar

2.src下放入Oscache的配置文件oscache.properties

3.web.xml中写入配置:

    最简单的配置:

<filter>
    <filter-name>CacheFilter</filter-name>
    <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>CacheFilter</filter-name>
    <url-pattern>/index.jsp</url-pattern>
</filter-mapping>

 关于详细配置的介绍在这里:http://www.opensymphony.com/oscache/wiki/CacheFilter.html

 一下是我的配置:

<filter>
		<filter-name>CacheFilter</filter-name>
		<filter-class>
			com.cache.MyFilterCache
		</filter-class>
		<init-param>
			<param-name>time</param-name>
			<param-value>-1</param-value>
		</init-param>
		<init-param>
			<param-name>EntryRefreshPolicy  </param-name>
			<param-value>com.cache.MyEntryRefreshPolicy</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CacheFilter</filter-name>
		<url-pattern>/index.jsp</url-pattern>
	</filter-mapping>

 注意:1.filter-class可以使用Oscache自带的com.opensymphony.oscache.web.filter.CacheFilter,

我是为了方便所以自己写了一个类继承了它,重写了一个createCacheKey方法:

     public class MyFilterCache extends CacheFilter{

	@Override
	 public String createCacheKey(HttpServletRequest httpRequest, ServletCacheAdministrator scAdmin, Cache cache) {
		return httpRequest.getServletPath();
    }
}
 

             2. EntryRefreshPolicy 是一个刷新缓存的控制类,实现EntryRefreshPolicy接口,这个接口只声明了

一个方法needsRefresh,就是是否要刷新,呵呵。网上有人说使用CacheFilter无法自己控制刷新,

只能用时间来控制,我看了一下源码发现是可以实现的。

public class MyEntryRefreshPolicy implements EntryRefreshPolicy {

	@Override
	public boolean needsRefresh(CacheEntry entry) {
		if(CacheUtil.isFLUSH()){//判断是否需要刷新缓存
			CacheUtil.setFLUSH(false);//刷新缓存后把需要刷新状态设为false
			return true;
		}
		return false;
	}

}

 其中用到了一个工具类:

public class CacheUtil {

	private static boolean FLUSH=false;//是否刷新缓存

	public static boolean isFLUSH() {
		return FLUSH;
	}

	public static void setFLUSH(boolean flush) {
		FLUSH = flush;
	}
	
}

3.配置中的time是控制刷新时间的,是int类型单位是s,默认是3600.我写成-1是不让他的这个功能生效。 

然后就可以手动的控制是否需要刷新了。

如果不仅需要定时刷新还需要手动刷新的话,就在needsRefresh方法中再总相应的处理。

在我的下一笔文章中实现了定时刷新和手动刷新: Oscache CacheFilter定时刷新和手动刷新缓存URL的实现

http://01404421.iteye.com/blog/510712

1
0
分享到:
评论

相关推荐

    用OSCache进行缓存对象

    1、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究

    oscache,缓存机制的使用

    oscache,java,缓存机制的使用

    oscache缓存技术

    oscache缓存技术,压缩包中有详细代码及步骤

    SSM的整合+OScache页面缓存+freemark模板

    SSM的整合+OScache页面缓存+freemark模板。这是一个很牛比的东西。看看啊

    oscache-java缓存框架

    oscache-java缓存框架插件和安装教程,使用教程一步到位

    OSCACHE网页缓存

    OSCACHE网页缓存.ppt ,页面cache

    oscache缓存技术入门实例

    oscache缓存技术入门实例

    OSCache jsp 缓存详解

    看就知道......................

    OsCache缓存框架使用示例

    这里结合 天气预报的webservice 展示了OsCache框架的具体使用方法 项目可直接运行 ,代码简洁清晰

    Hibernate OSCache缓存

    Hibernate OSCache缓存 Hibernate OSCache缓存

    osCache,缓存

    osCache,缓存精典实例,希望对java开发人员对帮助!

    OSCache缓存框架的简单用法

    OSCache缓存框架的简单用法,希望对大家有所帮助!!!

    二级缓存OScache配置

    二级缓存插件OScache配置,很好的学习资料

    OScache配置

    在 OSCache组件中提供了一个CacheFilter用于实现页面级的缓存,主要用于对web应用中的某些动态页面进行缓存,尤其是那些需要生成PDF 格式文件/报表、图片文件等的页面,不仅减少了数据库的交互、减少数据库服务器的...

    oscache缓存使用总结.doc

    oscache缓存使用总结

    oscache缓存中间件

    OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...

    基于OSCache的页面缓存(收藏)

    NULL 博文链接:https://davidxiaozhi.iteye.com/blog/1045223

    oscache文档

    OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速... 缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。

    OSCache缓存技术

    OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...

    oscache的例子

    OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存... (5) 缓存过期:你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不能满足需要时)。

Global site tag (gtag.js) - Google Analytics