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路径下是相互访问不到的

 

posted @ 2022-04-25 10:36  倚栏听风时  阅读(196)  评论(0编辑  收藏  举报