动态页面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状态码
}