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


    概述

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

  • 相关阅读:
    c++ cout、cin、endl
    c++ namespace
    找到小镇的法官
    整数反转
    c++stack类的用法
    栈应用:最小栈(第二题)
    栈的压入、弹出序列(第一题)
    c++中vector类的用法
    Android 面试常问七道题
    传感器实现仿微信摇一摇功能
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/10070247.html
Copyright © 2020-2023  润新知