之前对缓存都是一知半解的,都是基于理论之上没有正整实际动手验证过,今天抽时间终于把缓存重新理了一片
1、 设置js 、css缓存
http头部中设置expires,Cache-Control(具体怎么设置这里就不细说),IIS服务器上设置过期时间
2、浏览器中如何设置缓存document.cookie, 通过key/value的形式,对缓存的操作可参照
http://www.cnblogs.com/shaohz2014/p/3533886.html
var date =new Date().getTime()+10*24*3600*1000;
document.cookie="userId=828 ";
document.cookie="userName="+encodeURIComponent(" 重庆 ")+';'+"expires="+new Date(date).toGMTString();
注意: A、 编码问题,在cookie的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格,所有需要编码,之前的escape()编码已经过时,推荐encodeURI()
B、每个expires只是针对当前的cookie 生效,如上面的只针对key为userName的cookie有效
每次发送请求的时候都会在request头部加入cookie,如图:
在js中是无法获取cookie中expires失效时间,只有通过建立虚拟字段存储在cookie中,
3、浏览器encodeURI编码之后的cookie在服务器中获取,java.net.URLDecoder.decode()解码
request.getCookies(),返回的是一个cookie数组,
Cookie [] cookie = request.getCookies();
for(int i=0;i<cookie.length;i++){
String key = cookie[i].getName();
String value = cookie[i].getValue();
System.out.println(key+" "+java.net.URLDecoder.decode(value,"utf-8"));
}
4、服务器设置cookie
图中第一result存在于 request 中,但它是由于服务器中设置cookie后存在于每次请求的头部中,而第二个result存在于response中,它也是来至于服务器中。