概述
缓存这个技术在我们实际的开发中是非常常用的,也是非常重要的一项技术。主要用于客户端(浏览器)向服务器端请求的是一些比较大的数据,并且这个数据在短时间内不会经常发生变化的情况,比如一些网站的logo图片,它是一个网站的标志,一般不会发生变化,如果不缓存的话,而logo图片又比较大的话,那么浏览器每次发送请求时,服务端都要返回logo图片这个大数据信息,会影响到服务器的性能和效率,服务器端变慢了,也势必会导致用户页面看到的数据加载变慢。如果我们对图片进行一个合适时间内的缓存的话,这样会大大提高服务端的效率,还能提高客户端的用户体验。
Demo
使用response来设置缓存,主要是设置http的响应头expires的信息。
package com.test; import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 设置缓存 * 当浏览器第一次发送请求,如果服务器设置了缓存,浏览器就会把这次获得的数据缓存起来, * 在缓存时间内,浏览器是不会向服务器发送请求的,而是直接从缓存中获取数据 */ @WebServlet("/buffer.do") public class BufferServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 这里的时间是从1970开始,所以要设置当前时间+缓存的时间,时间单位为毫秒,这里缓存的时间为15秒 response.setDateHeader("expires", System.currentTimeMillis() + 1000 * 15); // 模拟的大数据 String bigData = "this is a big data,but it is not change. " + (new Date().toString()); response.getWriter().print(bigData); } }
测试
测试地址:http://127.0.0.1/buffer.do
测试结果:刷新网页,不变化,15秒后才会变化