`

JSF and cache-control

    博客分类:
  • JSF
阅读更多
进行的项目中遇到这样的问题,我的每一个连接都是连接一台服务器,点击一个连接时候刷新Iframe里页面配置一些参数,切换到另一个服务器连接的时候,Iframe里面列表依然显示着上一台服务器数据列表情况,bean数据没有清空。
在网上查了些资料,方法大概如下:
方案一
在head里添加信息,好像不起作用,可能和bean范围有关,没有细究
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache,must-revalidate" />
<meta http-equiv="expires" content="Wed,26 Feb 1997 08:21:57 GMT" />


方案二
利用filter,很好的思路
One of the most annoying problems with building dynamic websites is how to control page cache.

The most used solution is to use a <meta content=”no-cache” http-equiv=”Pragma”/> tag inside the <HEAD> tag. Voilà, problem solved. Wrong! For two reasons:
1. It’s HTML, (most) proxy servers will still cache your pages since they don’t read HTML
2. The HTTP specification does not set any guidelines for Pragma response headers; instead, Pragma request headers are discussed.
Although a few caches may honor this header, the majority won’t, and it won’t have any effect.

However, true HTTP headers are almost always obeyed by any cache. With ADF Faces / JSF it is quite easy to gain control over your caching strategies with a phaselistener:

package nl.iteye.utils;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpServletResponse;

public class NoCachePhaseListener implements PhaseListener {

    public PhaseId getPhaseId() {
        return PhaseId.RENDER_RESPONSE;
    }

    public void afterPhase(PhaseEvent phaseEvent) {
    }

    public void beforePhase(PhaseEvent phaseEvent) {
        FacesContext facesContext = phaseEvent.getFacesContext();
        HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
        response.addHeader(“Pragma”, “no-cache”);
        response.addHeader(“Cache-Control”, “no-cache”);
        response.addHeader(“Cache-Control”, “no-store”);
        response.addHeader(“Cache-Control”, “must-revalidate”);
        response.addHeader(“Expires”, “Mon, 1 Jan 2006 05:00:00 GMT”);//in the past
    }
}


And don’t forget to add the viewhandler to the faces-config.xml within the <lifecycle> tag : <phase-listener>nl.iteye.utils.NoCachePhaseListener</phase-listener> to make this magic work!

方案三
每次连接之前,代码清除bean
TestBean tBean=((TestBean)FacesUtils.getManagedBean("testBean"));
tBean.tlists = null;


分享到:
评论

相关推荐

    Disable Browser Caching in JSF

    至于提供的文件列表,它们看似与JSF禁用浏览器缓存的主题不直接相关,但可能是与学习或教学相关的文档,如"Lesson 1 Building and Running 'Hello, World!' .doc"可能是JSF入门教程的一部分,而"OAF.ppt"可能是关于...

    JAVA本地文件下载

    - **Cache-Control**: 设置为`no_cache`,禁止客户端缓存该文件。 - **Pragma**: 设置为`no_cache`,兼容旧版浏览器的缓存控制。 - **Content-Transfer-Encoding**: 设置为`binary`,表示文件是以二进制形式传输。 -...

    狂神说javaweb实战静态资源.rar

    - HTTP缓存策略:设置合适的Cache-Control、ETag等头信息,利用客户端缓存。 5. **JavaWeb中的静态资源处理**: - Tomcat等Servlet容器默认支持静态资源服务,无需编写额外代码。 - Spring Boot提供自动配置,...

    人事信息管理系统

    &lt;meta http-equiv="cache-control" content="no-cache"&gt; &lt;meta http-equiv="expires" content="0"&gt; &lt;meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&gt; &lt;meta http-equiv="description" ...

    expert+one-on-one+j2ee+development+without+ejb中文版.rar

    Spring提供了IOC(Inversion of Control)和AOP(Aspect Oriented Programming)功能,而Hibernate则是一个强大的ORM(Object-Relational Mapping)工具,它们降低了对EJB的依赖。 2. **Web层技术**:书中可能会...

    resin 入门基础教程.pdf

    - 集群配置标签的详细介绍,包括集群相关的各种配置项,如 &lt;access-log&gt;、&lt;cache&gt;、&lt;cluster&gt; 等。 - **Resource Tags** - 资源配置标签,包括数据库连接池、邮件服务等资源的配置。 - **Rewrite Dispatch** - ...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

     这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) spring-webmvc.jar  这个...

    spring-5.3.14-schema.zip

    Spring的核心在于IoC(Inversion of Control)容器,它管理着应用对象的生命周期和依赖关系。Beans模块是Spring的基础,定义了如何配置和管理这些对象。XML配置文件或Java配置类可以用来声明bean及其依赖,容器根据...

    最新最全的spring开发包

    这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar及...

Global site tag (gtag.js) - Google Analytics