在介绍HTML5 web缓存前,来认识一下cookie和session:
session:
由于HTTP是无状态的,你是谁?你干了什么?抱歉服务器都是不知道的。
因此session(会话)出现了,它会在服务器上存储用户信息以便将来使用(比如用户名称,购物车购买商品等)。
但是session是临时的,用户离开网站将被删除。如果要永久存储信息,可以保存在数据库中!
session工作原理:为每个用户创建一个session id(核心!!!)。而session id是存储在cookie中的,也就是说如果浏览器禁用了cookie,那么session会失效!(但是可以通过其它方式实现,如:通过URL传递session id)
用户验证一般采用session。
cookie:
目的:网站标记用户身份而存储在本地客户端的数据(通常经过加密)。
用户访问网页时,名字记录在cookie中;
下次继续访问该网页时,可以从cookie中读取用户访问记录。
cookie会在同源的http请求携带(即使不需要),即在客户端和服务器之间来回传递!
cookie的数据大小不超过4k
cookie的有效期:设置的cookie有效时间之前一直有效,即使浏览器关闭!
localStorage & sessionStorage:
早期,本地缓存普遍使用的是cookie,但是web存储需要更安全、更快速!
这些数据不会保存在服务器上(存储在客户端),不会影响服务器性能!
sessionStorage和localStorage数据存储也有大小限制,但却比cookie大得多,可以达到5M甚至更大!
localStorage:没有时间限制的数据存储!
sessionStorage:由英文意思也可知,它是对session的数据存储,所以在用户关闭浏览器(标签页/窗口)后,数据被删除!
HTML5 web存储支持情况:
IE8以上,现代浏览器。
数据以键值对存储:
localStorage和sessionStorage都有以下几个方法:
localStorage.setItem(key,value):设置(保存)数据;相当于localStorage.key=value!
localStorage.getItem(key):获取数据
localStorage.removeItem(key):删除单个数据
localStorage.clear():删除所有数据
localStorage.key(index):获取某个索引的键值
1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>web storage</title> 9 </head> 10 11 <body> 12 <div id="test"></div> 13 <script> 14 if (typeof (Storage) != undefined) { 15 localStorage.name = 'xiao ming'; 16 localStorage.setItem('name1', 'Apple'); 17 document.getElementById('test').innerHTML = "you are: " + localStorage.name; 18 console.log("first:" + localStorage.name1 + "," + localStorage.key(0)); 19 localStorage.removeItem('name1'); 20 console.log("second: " + localStorage.name1); 21 console.log("third: " + localStorage.getItem('name')); 22 localStorage.clear(); 23 console.log("last:" + localStorage.name); 24 } else { 25 document.getElementById('test').innerHTML = "更新浏览器吧!目前浏览器不支持stroage"; 26 } 27 28 </script> 29 </body> 30 31 </html>