缓存这个技术在咱们实际的开发中是很是经常使用的,也是很是重要的一项技术。主要用于客户端(浏览器)向服务器端请求的是一些比较大的数据,而且这个数据在短期内不会常常发生变化的状况,好比一些网站的logo图片,它是一个网站的标志,通常不会发生变化,若是不缓存的话,而logo图片又比较大的话,那么浏览器每次发送请求时,服务端都要返回logo图片这个大数据信息,会影响到服务器的性能和效率,服务器端变慢了,也势必会致使用户页面看到的数据加载变慢。若是我么对图片进行一个合适时间内的缓存的话,这样会大大提升服务端的效率,还能提升客户端的用户体验呢!java
使用response来设置缓存,主要时设置http的响应头的expires的信息,示例代码以下:浏览器
package com.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 设置缓存 * * @author Administrator 缓存是当浏览器第一次发送请求,若是服务器设置了缓存,就会将第一次请求得到的数据缓存在浏览器,那么在缓存时间内,浏览器是不会想服务器发送请求的,直接从缓存中获取数据 */ @WebServlet("/buff.do") public class BufferServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 这里的时间是从1970开始,因此要设置当前时间+缓存的时间,时间单位为毫秒,这里缓存的时间为1分钟 response.setDateHeader("expires", System.currentTimeMillis() + 1000 * 60); // 用来测试在缓存时间内,浏览器是否还向服务端发送请求 System.out.println("enter"); // 模拟的大数据 String bigData = "this is a big data,but it is not change."; response.getWriter().print(bigData); } }
在缓存时间内不管你发送了多少次请求输出的结果:缓存
enter服务器
而且从请求的响应头性能
Server: Apache-Coyote/1.1
Expires: Fri, 07 Jul 2017 07:49:26 GMT
Content-Length: 40
Date: Fri, 07 Jul 2017 07:48:26 GMT测试
从上面的结果能够看出,当咱们在服务端设置了缓存了,那么在缓存时间内,浏览器发送请求,取得数据时从本地缓存中获取的。大数据
至此,一个简单的使用response实现缓存的小案例演示完毕,有不足的地方,但愿你们多多提意见网站