就会 buffers servlet content apach import 体验 pro
缓存这个技术在我们实际的开发中是非常常用的,也是非常重要的一项技术。主要用于客户端(浏览器)向服务器端请求的是一些比较大的数据,并且这个数据在短时间内不会经常发生变化的情况,比如一些网站的 logo 图片,它是一个网站的标志,一般不会发生变化,如果不缓存的话,而 logo 图片又比较大的话,那么浏览器每次发送请求时,服务端都要返回 logo 图片这个大数据信息,会影响到服务器的性能和效率,服务器端变慢了,也势必会导致用户页面看到的数据加载变慢。如果我么对图片进行一个合适时间内的缓存的话,这样会大大提高服务端的效率,还能提高客户端的用户体验呢!
使用 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 classBufferServletextends HttpServlet {
- private static final longserialVersionUID = 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 实现缓存的小案例演示完毕,有不足的地方,希望大家多多提意见
使用 response 来控制浏览器的缓存
来源: http://www.bubuko.com/infodetail-2157566.html