cookie,session,localStorage,sessionStorage的区别
1.cookie会在浏览器与服务器之间来回传递,sessionStroage和localStroage不会把数据传递给服务端,仅仅只在本地保存,三者都是保存在客户端。
2.数据的有效期不同
(1)cookie只在cookie设置的有效期之前有效,即使是浏览器的窗口关闭
(2)sessionStroage只在当前浏览器窗口关闭之前有效
(3)localstroage长期有效,永久保存,除非手动删除
3.cookie数据有路径的概念,可以设置cookie单属于某个路径下
存储的大小也不同,cookie的大小不能超过4k,localStroage和sessionStroage虽然也有数据大小的限制,但是比cookie大的多,可以达到5M甚至更多
4.作用域不同
(1)sessionStroage不在不同的浏览器窗口共享
(2)localStroage可以在所有的同源窗口中共享,cookie也是在所有的同源窗口中共享的
(3)WebStroage(localStroage和sessionStroage)支持事件通知机制,可以将数据更新的通知发送给监听者,这使得WebStroage的api接口的使用更加方便
5.实用总结
(1)cookie的读写
function setCookie(name,value) { var Days = 30; //此 cookie 将被保存 30 天 var exp = new Date(); //new Date("December 31, 9998"); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+ escape(value) +";expires="+ exp.toGMTString(); } function getCookie(name) { var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) return unescape(arr[2]); return null; } function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie=name +"="+cval+";expires="+exp.toGMTString(); } 删除所有cookies function clearCookie(){ var keys=document.cookie.match(/[^ =;]+(?=\=)/g); if (keys) { for (var i = keys.length; i--;) document.cookie=keys[i]+'=0;expires=' + new Date( 0).toUTCString() } }
(2)sessionStroage的读写
存取值: window.sessionStorage.setItem("key", "value"); 获取值: window.sessionStorage.getItem("username");删除指定键 sessionStorage.removeItem("key");删除所有 sessionStorage.clear();
(3)localStroage的读写
1 localStorage.setItem("key", "value"); 2 读取数据语法: 3 4 var lastname = localStorage.getItem("key"); 5 删除数据语法: 6 7 localStorage.removeItem("key"); 8 删除所有 9 sessionStorage.clear();
6.cookie和session的区别
(1)cookie数据存放在客户端的浏览器上,session数据存放在服务器上
(2)cookie不是很安全,别认可以分析存放在本地的cookie进行cookie欺骗,考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上,当访问增多,会影响到你服务器的性能,考虑到服务器性能的话应该使用cookie
(4)单个cookie保存的数据不能超过4k,很多浏览器设置的限制是一个站点最多同时保存20个cookie
(5)session保存在服务器,客户端不知道其中的信息,cookie保存在客户端,服务端知道其中的信息
(6)session中保存的是对象,cookie中保存的是字符串
(7)session不能设置路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到,而cookie中,如果设置了路径参数,那么同一个网站中不同的cookie路径下是相互访问不到的