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

目尽地平线 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,也就是从服务器拿?这时候不应该是全部从缓存里取出来吗?
...全文
365 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
目尽地平线 2015-08-20
  • 打赏
  • 举报
回复
求高手解释一下,查了许多文档都只是把这几个状态码简单列了一下,并没有详细说明什么时候才会返回,有什么不同

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧