设置响应头控制浏览器的缓存

概述

缓存这个技术在我们实际的开发中是非常常用的,也是非常重要的一项技术。主要用于客户端(浏览器)向服务器端请求的是一些比较大的数据,并且这个数据在短时间内不会经常发生变化的情况,比如一些网站的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秒后才会变化

原文地址:https://www.cnblogs.com/Mike_Chang/p/10070247.html