JavaScript的离线存储——localStorage、sessionStorage以及cookie

相同:三者都是存储数据在客户端

使用:用户初次登录时cookie、localStorage存储以及获取数据

// cookie存储
function saveCookie(cookieName,cookieValue,cookieDates){
  var d = new Date();
  d.setDate(d.getDate()+cookieDates);
  document.cookie = cookieName+"="+cookieValue+";expires="+d.toGMTString();
}
//获取Cookie
function getCookieT(cookieName){
    var cookieStr = unescape(document.cookie);
    var arr = cookieStr.split("; ");
    var cookieValue = "";
    for(var i=0;i<arr.length;i++){
      var temp = arr[i].split("=");
      if(temp[0]==cookieName){
        cookieValue = temp[1];
        break;
      }
    }
    return cookieValue;
}
//清除
function clearAllCookie() {
var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
    if(keys) {
        for(var i = keys.length; i--;)
        document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString()
    }
}
// 实现
login(){
  var url=this.baseUrl+"/api/login/login";
  var obj={phone:this.phone,password:this.password};
  this.$axios.post(url, qs.stringify(obj),{
    headers: {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}
  }).then(res=>{
    if(res.data.code=='success'){
      // 存储token到cookie
      saveCookie('token',res.data.token,1)
      // 获取cookie的token
      // console.log(this.$getCookie('token'))

      // 存储id到localStorage  // sessionStorage有相同的API:setItem、getItem、removeItem...
      localStorage.setItem('userId',res.data.id);
      // 获取localStorage的id
      // console.log(localStorage.getItem('userId'));
      this.$router.push('/');
    }else{
      Toast(res.data.msg);
    }
   })

不同:

  1. 存储大小不同:

cookie在不同浏览器容纳的个数不一样,30~50,存储大小不超过4k。

H5提出的离线存储localStorage和sessionStorage就是为解决cookie存储大小而生,可以达到5M(以上)。

  1. 有效时间不同:

cookie可以设置一个有效时间。

sessionStorage是会话级别的离线存储,即关闭当前浏览器窗口就会被清理了。

localStorage是永久性的离线存储,除非手动清除缓存(记录在内存中的)。

3.数据与服务器之间的交互

cookie数据始终在同源http请求中携带着,即使服务器并不需要,也会在客户端和浏览器之间来回传递。

localStorage和sessionStorage是不会主动发送个服务器的。

注意:不同浏览器是不能共享localStorage和sessionStorage数据的;相同浏览器的不同页面之间可以共享数据(同域名同端口);区分不同页面或标签页间也是无法共享的。(依照同源策略)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
localStoragesessionStoragecookie都是在Web开发中用于在浏览器端存储数据的机制。 localStorage是一种持久化存储机制,数据会一直保存在浏览器中,直到被显式清除或通过代码删除。存储localStorage中的数据可以跨会话和页面保持不变,即使浏览器关闭和重新打开也不会丢失。localStorage只能通过JavaScript访问,它提供了setItem、getItem和removeItem等方法来操作存储的数据。 sessionStorage也是一种存储数据的机制,但与localStorage不同的是,存储sessionStorage中的数据仅在当前会话(当前标签页或窗口)中有效。当会话结束(标签页或窗口关闭)时,存储sessionStorage中的数据就会被清除。sessionStorage的使用方法和localStorage相似,也是通过setItem、getItem和removeItem等方法来操作数据。 cookie是一种在浏览器和服务器之间传递的小型文本文件,用于存储会话相关的信息。与localStoragesessionStorage不同,cookie的数据会随着每个HTTP请求发送到服务器端,并且可以设置过期时间。由于cookie会在每个请求中传输,所以存储cookie中的数据大小有限制(通常为几KB)。可以使用JavaScript或服务器端语言来设置和读取cookie。 总结:localStoragesessionStorage主要用于在浏览器端持久化存储数据,而cookie主要用于在浏览器和服务器之间传递会话相关的信息。具体使用哪种机制取决于实际需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值