使用SSH做成的网站,首页如何载入数据是一个问题,既要考虑到及时性和性能也要考虑到SEO,javaeye上也有很多相关的讨论。比如问答版块中的:
http://www.iteye.com/problems/27503
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、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究
oscache,java,缓存机制的使用
oscache缓存技术,压缩包中有详细代码及步骤
SSM的整合+OScache页面缓存+freemark模板。这是一个很牛比的东西。看看啊
oscache-java缓存框架插件和安装教程,使用教程一步到位
OSCACHE网页缓存.ppt ,页面cache
oscache缓存技术入门实例
看就知道......................
这里结合 天气预报的webservice 展示了OsCache框架的具体使用方法 项目可直接运行 ,代码简洁清晰
Hibernate OSCache缓存 Hibernate OSCache缓存
osCache,缓存精典实例,希望对java开发人员对帮助!
OSCache缓存框架的简单用法,希望对大家有所帮助!!!
二级缓存插件OScache配置,很好的学习资料
在 OSCache组件中提供了一个CacheFilter用于实现页面级的缓存,主要用于对web应用中的某些动态页面进行缓存,尤其是那些需要生成PDF 格式文件/报表、图片文件等的页面,不仅减少了数据库的交互、减少数据库服务器的...
oscache缓存使用总结
OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...
NULL 博文链接:https://davidxiaozhi.iteye.com/blog/1045223
OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速... 缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。
OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...
OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存... (5) 缓存过期:你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不能满足需要时)。