• 使用response来控制浏览器的缓存


            缓存这个技术在我们实际的开发中是非常常用的,也是非常重要的一项技术。主要用于客户端(浏览器)向服务器端请求的是一些比较大的数据,并且这个数据在短时间内不会经常发生变化的情况,比如一些网站的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 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实现缓存的小案例演示完毕,有不足的地方,希望大家多多提意见

  • 相关阅读:
    MongoDB集群运维笔记
    第十八节:SSM搭建之分层、聚合、继承、属性、版本管理、资源配置、多环境、跳过测试
    第十六节:SpringMvc拦截器、全局异常处理、RestFul风格编程、文件上传
    Java认证授权框架Spring Security介绍
    干货:RabbitMQ消息队列基本原理介绍
    微服务开发框架 SpringCloud
    Pygame实战项目:用300行代码写出贪吃蛇小游戏
    内外盘
    [转贴]太有用了,留存!Kaggle数据下载
    shell执行报错: bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory的解决方法
  • 原文地址:https://www.cnblogs.com/nanyangke-cjz/p/7132636.html
Copyright © 2020-2023  润新知