`
01404421
  • 浏览: 228294 次
  • 性别: 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,缓存机制的使用

    - `refresh`: 控制缓存内容是否强制刷新,可设为`false`或`true`。 - `mode`: 若设置为`silent`,则被缓存的内容不会被添加到用户响应中,适用于后台缓存管理。 此外,`oscache`还提供了诸如`cron`、`groups`、`...

    OsCache缓存框架使用示例

    OsCache是Java应用程序中常用的缓存框架,它能够有效地提高应用程序的性能,通过将经常访问的数据存储在内存中,减少对数据库或其他数据源的访问,从而降低系统负载。本示例将通过一个天气预报Web服务的场景,详细...

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

    此外,OSCache还提供了缓存分组和缓存区域的概念,便于管理多个不同类型的缓存。通过设置不同的缓存区域,可以实现不同业务场景下的缓存策略。 在实际应用中,可能还需要考虑缓存同步问题。例如,当有多个服务器...

    用OSCache进行缓存对象

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

    oscache缓存技术

    - **事件监听**:osCache允许注册监听器来处理缓存的添加、删除和更新事件,这在实现缓存同步或记录日志时非常有用。 - **缓存预热**:在应用启动时,可以预先加载一部分常用数据到缓存,提高系统启动后的响应速度...

    OSCACHE配置URL实现页面缓存的Fliter(修改配置无需重启)

    描述中提到的“源代码”和“博文链接”暗示我们将通过阅读源码和博客文章来理解如何配置OSCache Filter以实现URL级别的缓存,并且这种配置变动在不重启服务器的情况下即可生效。 **OSCache基础** 1. **OSCache简介...

    oscache对象缓存

    Spring的`@Cacheable`、`@CacheEvict`等注解可以方便地声明式地控制缓存行为,简化代码的同时提高了可维护性。 然而,使用oscache时也需要注意一些问题。例如,缓存的大小设置需要根据系统的内存资源和数据特性来...

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

    通过以上步骤,可以构建一个完整的SSM整合项目,结合OScache的页面缓存和Freemarker模板,能提供高性能、易于维护的Web应用。同时,通过RequestBody和ResponseBody,可以实现前后端的JSON数据交互,满足现代Web开发...

    oscache缓存技术入门实例

    3. 更新通知:当缓存中的数据发生变化时,osCache可以通过事件机制通知其他系统组件,实现数据的一致性。 4. 缓存同步:在多线程或多服务器环境下,osCache提供了一套机制来确保缓存数据的一致性和完整性。 三、...

    oscache-java缓存框架

    osCache是Java开发中常用的缓存框架之一,它主要用于提高应用程序的性能和效率,通过将数据存储在内存中,减少对数据库的访问。osCache不仅可以用于Web应用,也可以用于任何Java应用程序,支持集群环境,提供了丰富...

    oscache-JSP缓存

    - **缓存刷新**:支持手动和自动的缓存刷新机制,确保数据的实时性。 - **并发控制**:内置锁机制,确保多线程环境下数据的一致性。 - **缓存监听器**:允许注册监听器,当缓存发生变动时触发相应事件。 - **与...

    基于OSCache的页面缓存

    OSCache是开源的Java缓存框架,能够帮助开发者实现高效的页面和数据缓存,从而降低数据库的访问压力,提高应用的响应速度。 一、缓存整个页面 OSCache组件提供的`CacheFilter`是一个关键元素,它能对整个动态页面...

    osCache,缓存

    例如,在Hibernate中启用osCache,可以实现二级缓存,进一步提高ORM操作的效率。 7. **序列化支持**:osCache支持对象的序列化,这意味着不仅可以缓存基本类型和字符串,还可以缓存复杂的对象结构。 8. **性能优化...

    hibernate+oscache实现二级缓存实例

    本实例将介绍如何结合Hibernate和OSCache实现二级缓存,以优化应用程序的性能。 一级缓存是Hibernate内置的Session级别的缓存,它存储了在同一个Session内操作的对象,避免了频繁的数据库读写。然而,一级缓存仅...

    OSCache 缓存对象的总结

    3. **缓存刷新与过期**:OSCache 提供了自动和手动两种方式来控制缓存的过期和刷新。自动过期可以通过设置时间戳或者访问次数来触发,而手动刷新则允许开发者根据业务需求来更新缓存内容。 4. **缓存同步**:在多...

    OSCache缓存jsp例子

    此外,OSCache还提供了API来实现更复杂的缓存操作,如清除特定缓存项、刷新整个缓存等。开发者可以根据实际需求选择合适的缓存策略和管理方法。 在实际应用中,需要注意监控和调整缓存设置,以确保最佳性能。过度...

    OSCache缓存框架的简单用法

    通过配置网络通信和序列化策略,可以实现跨节点的缓存操作。 **7. 过期与清理机制** OSCache支持自动过期,可以设置对象的存活时间和空闲时间。当达到预设时间,对象将自动从缓存中移除。此外,OSCache还提供定时...

    oscache缓存配置

    除了静态配置文件外,osCache还支持动态编程配置,可以在代码中通过`CacheManager`实例创建和管理缓存。例如: ```java import net.sf.oscache.CacheManager; CacheManager.init("oscache.properties"); // 初始化...

Global site tag (gtag.js) - Google Analytics