动态页面JSP实现Last-Modified缓存

2019-02-15  本文已影响0人  宋雾代

使用的是tomcat服务器。

由于动态页面,服务器并不会在请求中加入Last-Modified信息。所以页面不会被缓存。要实现缓存,需要我们自己去编写。我把它写在filter中,以下是java代码。

String date = Config.getString("Last-Modified","");//从配置文件中读取最后更新时间。

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd-HHmm");

Date time = new Date();

if(!"".equals(date)){
    try {
        time = format.parse(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }
}
res.setDateHeader("Last-Modified", time.getTime()); //将日期输出到响应头中
res.setHeader("Cache-Control", "public"); // HTTP/1.1 开启缓存
res.setHeader("Pragma", "Pragma"); // HTTP/1.0开启缓存
Object lastDate = req.getHeader("If-Modified-Since"); //从请求头中获取浏览器送过来的上次修改时间

if(lastDate!=null){
    long lastModified = Date.parse(lastDate.toString());
    if(time.getTime() == lastModified) res.setStatus(304); //如果相等则返回304状态码
}
上一篇下一篇

猜你喜欢

热点阅读