最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • cookie、localStorage、sessionStorage缓存记录

    正文概述 掘金(晨墨)   2021-04-22   394

    前言:最近在做项目的时候遇到一个问题,将项目嵌入到一个平台,该平台A的用户在项目B下可能拥多个不同角色的账户,每个账户的token不同,每个账户下的操作需要携带该账户的的token信息,因此采取的方案就是使用本地缓存localStorage存储token信息,但是又出现了另一个问题,在同一浏览器不同页面切换到不同账户时,页面a账户进行操作拿到的是页面b账户的token值,同一浏览器不同页面之间的token值串错,因此后续解决方案是用sessionStorage进行存储,保证了不同会话之间的token值相互独立。

    cookie

    cookie使用方法

    JavaScript原生的用法

    Cookie 以名/值对形式存储。JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除 cookie。

    JavaScript 中,创建 cookie如下所示:
    document.cookie="itemToken=10001110";
    
    为 cookie 添加一个过期时间(以 UTC 或 GMT 时间)
    document.cookie="itemToken=10001110; expires=Thu, 22 Apr 2021 12:00:00 GMT";
    
    使用 path 参数告诉浏览器 cookie 的路径。默认情况下,cookie 属于当前页面。
    document.cookie="itemToken=10001110; expires=Thu, 22 Apr 2021 12:00:00 GMT; path=/";
    

    设置cookie的值

    const setCookie = (name,value,extime) =>{
      let SetTime = new Date();                                         //设置过期时间
      SetTime.setTime(SetTime.getTime()+(extime*24*60*60*1000));        //设置过期时间
      let expires = "expires="+SetTime.toGMTString();                   //设置过期时间
      document.cookie = name + "=" + value + "; " + expires;            //创建一个cookie
    }
    

    获取指定名称的cookie值

    const getcookie = (objname)=>{ // 获取指定名称的cookie的值  
        let arrstr = document.cookie.split(";");  
        let res = null  
        for(var i = 0;i < arrstr.length;i ++){
          let temp = arrstr[i].split("=");    
          if(temp[0] == objname) {      
            res = unescape(temp[1])    
          }   
        }  
        return res
    }
    

    localStorage

    localStorage.getItem(keyName);  //获取指定key的本地存储的值
    
    localStorage.setItem(keyName,value);  //将value存储到key字段中
    
    localStorage.removeItem(keyName);  //删除指定ke的本地存储的值
    

    sessionStorage

    sessionStorage.getItem(keyName);  //获取指定key的本地存储的值
    
    sessionStorage.setItem(keyName,value); //将value存储到key字段中
    
    sessionStorage.removeItem(keyName); //删除指定ke的本地存储的值
    

    其他

    三者的异同

    特性cookielocalStoragesessionStorage
    数据的生命期可设置失效时间,默认是关闭浏览器后失效除非被清除,否则永久保存仅在当前会话下有效,关闭页面或浏览器后被清除存放数据大小4K左右一般为5MB一般为5MB与服务器端通信每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题仅在客户端(即浏览器)中保存,不参与和服务器的通信仅在客户端(即浏览器)中保存,不参与和服务器的通信易用性需要程序员自己封装,源生的Cookie接口不友好源生接口可以接受,亦可再次封装来对Object和Array有更好的支持源生接口可以接受,亦可再次封装来对Object和Array有更好的支持

    缓存原理及优缺点

    原理:先查询缓存中有没有要的数据,如果有,就直接返回缓存中的数据。如果缓存中没有要的数据,才去查询数据库,将得到数据先存放到缓存中,然后再返回给后端。

    优点:

    1. 减少了对数据库的读操作,数据库的压力降低
    2. 加快了响应速度  

    缺点:

    1. 因为内存断电就清空数据,存放到内存中的数据可能丢失
    2. 缓存中的数据可能与数据库中数据不一致
    3. 内存的成本高 
    4. 内存容量相对硬盘小

    参考链接

    segmentfault.com/a/119000000…
    juejin.cn/post/684490…
    segmentfault.com/a/119000001…


    起源地下载网 » cookie、localStorage、sessionStorage缓存记录

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元