http协议-缓存控制:etag If-None-Match / Last-Modified If-Modified-Since
ETag和Last-Modified用法上的区别是:ETag必须由开发人员来使用,而Last-Modified服务器会自动判断。也就是说服务器自己能够获取文件的"Last-Modified"并和"If-Modify-Since"进行对比,进而决定发送什么样的响应。而ETag则必须由开发人员自己来和"If-None-Match"进行比较判断。
加上ETag一个用途是,假如文件被编辑了,但实际上内容并没有变化,此时可以指定ETag的值不变,这样它和浏览器发送过来的"If-None-Match"的值就相等了,进而可以指定响应为304,即未发生改变。如果不加ETag这个功能,则浏览器会发送200响应。
具体演示代码晚上再写,第一次研究技术熬到这么晚,困了。
ByteArrayOutputStream baos = new ByteArrayOutputStream();ETagResponseWrapper wrappedResponse = new ETagResponseWrapper(servletResponse, baos);chain.doFilter(servletRequest, wrappedResponse);