使用Filter实现缓存,以及Http状态码200,200(from cache),304(not modify)的区别

目尽地平线 爱范儿 Web前端工程师  2015-08-20 12:20:27
在jsp项目中,使用Filter来实现对所有页面缓存,核心代码如下:

@WebFilter("/*")
public class CacheFilter implements Filter {
/**
* 拦截所有路径,设置缓存
*/
public void doFilter(ServletRequest req, ServletResponse rsp, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response=(HttpServletResponse) rsp;
response.setDateHeader("Expires", System.currentTimeMillis()+20000); //过期时间为20秒
response.setHeader("Cache-Control", "public");
chain.doFilter(req, response);
}

@Override
public void destroy() {

}

@Override
public void init(FilterConfig arg0) throws ServletException {

}

}


运行项目,用浏览器打开页面,刷新,打开调试窗口,发现返回的结果有如下几种:
【200】


【200(from cache)】


【304(not modify)】



问题来了:
1、200是连接服务器拿的,200(from cache)是从缓存里拿的,那么304呢,从哪里取数据?什么情况下才会返回304?
2、为什么我对所有的路径(/*)设置缓存,刷新页面之后,还会有返回200,也就是从服务器拿?这时候不应该是全部从缓存里取出来吗?
...全文
164 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
目尽地平线 2015-08-20
求高手解释一下,查了许多文档都只是把这几个状态码简单列了一下,并没有详细说明什么时候才会返回,有什么不同
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-08-20 12:20
社区公告
暂无公告