案例一:禁止浏览器缓存动态页面

本文介绍了一种通过设置HTTP响应头来禁止浏览器缓存动态页面的方法,并提供了一个Java Servlet过滤器示例,该过滤器可以确保高实时性数据不被缓存。

 

禁止浏览器缓存所有动态页面的过滤器:

有 3 个 HTTP 响应头字段都可以禁止浏览器缓存当前页面,它们在 Servlet 中的示例代码如下:

  • response.setDateHeader("Expires",-1);
  • response.setHeader("Cache-Control","no-cache"); 
  • response.setHeader("Pragma","no-cache"); 

并不是所有的浏览器都能完全支持上面的三个响应头,因此最好是同时使用上面的三个响应头。

Expires数据头:值为GMT时间值,为-1指浏览器不要缓存页面

Cache-Control响应头有两个常用值:

  • no-cache指浏览器不要缓存当前页面。
  • max-age:xxx指浏览器缓存页面xxx秒,例如"Cache-Control", "max-age=3600"

 

什么数据要禁止浏览器缓存? 

如果一些数据,实时性要求比较高, 那么 这样的数据就要通知浏览器不要缓存。例如彩票网站、股票网站等等。

代码如下:

package blog.youkuaiyun.com.web.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * 禁止缓存filter
 * @author mChenys
 *
 */
public class NoCacheFilter implements Filter {

	public void init(FilterConfig filterConfig) throws ServletException {

	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		// 强转request和response对象
		HttpServletRequest httpServletRequest = (HttpServletRequest) request;
		HttpServletResponse httpServletResponse = (HttpServletResponse) response;

		// 这三个头 设置 浏览器 不要 缓存
		httpServletResponse.setHeader("cache-control", "no-cache");
		httpServletResponse.setHeader("Pragma", "no-cache");
		httpServletResponse.setDateHeader("Expires", 0); // 设置 为 0 就表示 1970 0 点0 分0 秒

		// 放行
		chain.doFilter(httpServletRequest, httpServletResponse);
	}

	public void destroy() {

	}

}

注册filter:

<filter>
    <filter-name>NoCacheFilter</filter-name>
    <filter-class>blog.youkuaiyun.com.web.filter.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>NoCacheFilter</filter-name>
    <!-- 这里使用的 是 扩展名 匹配, 表示 访问 jsp 页面的 时候 ,这个 filter 执行 过滤  -->
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>

 测试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值