使用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实现缓存的小案例演示完毕,有不足的地方,希望大家多多提意见
使用response来控制浏览器的缓存的更多相关文章
- 通过HTTP头控制浏览器的缓存
通过HTTP头控制浏览器的缓存 浏览器缓存是提高用户体验和提升程序性能的一个很重要的途径,通过浏览器的缓存控制,可以对实时性要求不高的数据进行缓存,可以减少甚至不需要再次对服务器的请求就可以显示数据. ...
- java中设置http响应头控制浏览器禁止缓存当前文档内容
response.setDateHeader("expries", -1); response.setHeader("Cache-Control", " ...
- HttpServletResponse常见应用——设置响应头控制浏览器的行为
1.设置http响应头控制浏览器禁止缓存当前文档内容 1 response.setDateHeader("expries", -1); 2 response.setHeader(& ...
- servletResponse 控制浏览器缓存
//当访问一些资源文件时,我们希望,访问一次后,资源文件能够在缓存在浏览器中,当我们再次访问该资源时 //直接从缓存中去取,这样可以减少服务器的压力 package response; import ...
- Nginx实践篇(2)- Nginx作为静态资源web服务 - 控制浏览器缓存、防盗链
一.控制浏览器缓存 1. 浏览器缓存简介 浏览器缓存遵循HTTP协议定义的缓存机制(如:Expires;Cache-control等). 当浏览器无缓存时,请求响应流程 当浏览器有缓存时,请求响应流程 ...
- [javaEE] 控制浏览器缓存资源
浏览器有默认的缓存机制,不同的浏览器,缓存头是不一样的 设置编码,调用setContentType()方法,参数:”text/html;charset=utf-8” 关闭缓存,调用setHeader( ...
- 浏览器HTTP缓存原理分析
以前项目中遇到了很多浏览器缓存相关的问题,也在网上查过资料,搞过服务器的配置,来确保客户端加载服务器资源的速度和资源有效性.最近仔细看了下http协议中和缓存相关的一些属性,总结一下. 浏览器缓存原理 ...
- 使用服务器端控制AJAX页面缓存
你知道 response.setHeader("Cache-Control","no-cache"); 这条语句是干什么的吗? 这是用来防止浏览器缓存动态内容生 ...
- atitit。浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结
atitit.浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结 1. 缓存的一些机制 1 1.1. http 304 1 1.2. 浏览器刷新的处理机制 1 1.3. Expir ...
随机推荐
- jquery判断元素的子元素是否存在
jquery判断元素的子元素是否存在的示例代码. jquery判断子元素是否存在 一.判断子元素是否存在 //一级子元素 if($("#specialId>img").len ...
- atitit.按钮光标滑过高亮切换以及其他动态效果的实现css html js --attilax总结
atitit.按钮光标滑过高亮切换以及其他动态效果的实现css html js --attilax总结 4. 鼠标越过动态图片切换实现 1 4.1. 优先模式::css模式... 1 4.2. 其次 ...
- python内置函数之dict()
class dict(**kwargs) 返回一个字典.本方法用来创建一个字典对象.只能传入一个参数. >>> dict(a=1) {'a': 1} 也可以传入映射函数作为参数 &g ...
- 李洪强iOS经典面试题35-按层遍历二叉树的节点
李洪强iOS经典面试题35-按层遍历二叉树的节点 问题 给你一棵二叉树,请按层输出其的节点值,即:按从上到下,从左到右的顺序. 例如,如果给你如下一棵二叉树: 3 / \ 9 20 ...
- 处理图片(updated)
高像素的图片,比如分辨率为 7712x4352 的照片,当加载到一个 bitmap 中时会占用相当大的内存. 每个像素会占用 4个字节的内存,所以当没有被压缩时,全部的图片会占用 12800万字节(约 ...
- Unicode Table
Unicode Table http://www.tamasoft.co.jp/en/general-info/unicode.html 00 01 02 03 04 05 06 07 08 09 ...
- love2d--glsl01简单的渲染
love2d一个好玩的地方是支持glsl1.2,并修改简化,glsl1.2的文档 地址为:http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.2 ...
- 原创jQuery插件之图片自适应
效果图例如以下: 功能:使图片自适应居中位于容器内 限制:容器须要给定大小 用法: 1.引入jQuery.然后引入fitimg插件 2.给须要图片自适应的容器固定宽高 3.header .accoun ...
- hadoop onekey_step2
#onekey_step2 # Rrogram: # 安装hadoop简易集群程序 # 使用说明 # History: # -- luoqi v0. release # email: # @qq.co ...
- 递归删除子目录下所有.la后缀文件
删除当前目录及其子目录下的后缀名.la的所有文件 find ./ -name '*.la' | xargs rm -f