• cookie,localStorage和sessionStorage的区别


    基本概念

    ​ cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。

    ​ 当访问者首次访问页面时,他或她也许会填写他/她们的名字。名字会存储于 cookie 中。当访问者再次访问网站时,他们会收到类似 "Welcome Jacob!" 的欢迎词。而名字则是从 cookie 中取回的。这通常就是通过在 cookie 中存入一段辨别用户身份的数据来实现的。

     在HTML5之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。

    ​ 在HTML5中提供了两种在客户端存储数据的新方法:

    //JS设置cookie、读取cookie、删除cookie
    //写cookies
    function setCookie(name,value)
    {
       var Days = 30;
       var exp = new Date();
       exp.setTime(exp.getTime() + Days*24*60*60*1000);
       document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
    }
    
    //读取cookies
    function getCookie(name)
    {
       var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
       if(arr=document.cookie.match(reg))
       return unescape(arr[2]);
       else
       return null;
    }
    
    //删除cookies
    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();
    }

    sessionStorage

    ​ 为每一个给定的源(given origin)维持一个独立的存储区域,该存储区域在页面会话期间可用(即只要浏览器处于打开状态,包括页面重新加载和恢复)。

    localStorage

    ​ 同样的功能,但是在浏览器关闭,然后重新打开后,除非数据被清除,否则仍然存在。

    //setItem存储value
    sessionStorage.setItem("key", "value"); 	
    localStorage.setItem("key", "value");
    
    //getItem获取value
    var value = sessionStorage.getItem("key"); 	
    var site = localStorage.getItem("key");
    
    //removeItem删除key
    sessionStorage.removeItem("key"); 	
    localStorage.removeItem("site");
    
    //clear清除所有的key/value
    sessionStorage.clear(); 	
    localStorage.clear();
    

      

     三者的区别

    特性cookiesessionStoragelocalStorage
    数据生命期 生成时就会被指定一个maxAge值,这就是cookie的生存周期,在这个周期内cookie有效,默认关闭浏览器失效 页面会话期间可用 除非数据被清除,否则一直存在
    存放数据大小 4K左右(因为每次http请求都会携带cookie) 一般5M或更大详细看这(需科学上网)
    与服务器通信 由对服务器的请求来传递,每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题 数据不是由每个服务器请求传递的,而是只有在请求时使用数据,不参与和服务器的通信
    易用性 cookie需要自己封装setCookie,getCookie 可以用源生接口,也可再次封装来对Object和Array有更好的支持
    共同点 都是保存在浏览器端,和服务器端的session机制不同(这里有一篇很好的介绍cookie和session的文章

     安全性问题

    ​ 无论是cookie还是HTML5的本地存储,都是相对不安全的,很容易受到各种各样的攻击,特别是HTML5的存储空间大,给了攻击者更大的发挥平台,所以都不能用来存储敏感信息。登录信息等重要信息还是存放到服务器里比较好。

  • 相关阅读:
    (原创)monitor H3C switch with cacti
    (原创)monitor Dell Powerconnec 6224 with cacti
    (转载)运行主机管理在openvswitch之上
    图片鼠标滑动实现替换
    分布式缓存(一)失效策略和缓存问题击穿,雪崩,穿透
    Spring 事务源码学习
    FactoryBean和BeanFactory
    Spring AOP 源码学习
    “两地三中心”和“双活”
    安装 geopandas 步骤
  • 原文地址:https://www.cnblogs.com/binmengxue/p/8086803.html
Copyright © 2020-2023  润新知