一、Cookie和Session的区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上(一般以内存、数据库、文件形式)。
2、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用Cookie;
3、单个cookie保存的数据不能超过4K,Session没有大小限制;
总结:Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在内存,集群、数据库、文件中;
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
二、cookie 、localStorage 、sessionStorage 的区别?
1、cookie
数据的生命期: 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效
存放数据大小: 4K左右
与服务器端通信:每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题易用性
易用性:需要程序员自己封装,源生的Cookie接口不友好
2、localStorage 数据的生命期:除非被清除,否则永久保存
sessionStorage 数据的生命期:仅在当前会话下有效,关闭页面或浏览器后被清除
存放数据大小: 一般为5MB
与服务器端通信:仅在客户端(即浏览器)中保存,不参与和服务器的通信
易用性:源生接口可以接受,亦可再次封装来对Object和Array有更好的支持
setItem存储value
sessionStorage.setItem("key", "value"): localStorage.setItem("site", "js8.in");
getItem获取value
var value = sessionStorage.getItem("key"): var site = localStorage.getItem("site");
removeItem删除key 用途:删除指定key本地存储的值
sessionStorage.removeItem("key"): localStorage.removeItem("site");
clear清除所有的key/value 用途:清除所有的key/value
sessionStorage.clear(): localStorage.clear();
localStorage和sessionStorage的key和length属性实现遍历 sessionStorage和localStorage提供的key()和length可以方便的实现存储的数据遍历,例如下面的代码:
var storage = window.localStorage; for(var i=0, len=storage.length; i<len;i++){ var key = storage.key(i); var value = storage.getItem(key); console.log(key + "=" + value); }
3、作用域不同
sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;
localStorage 在所有同源窗口(域名、协议、端口相同)中都是共享的;
cookie也是在所有同源窗口中都是共享的。