美文网首页
浏览器本地存储

浏览器本地存储

作者: 小雞雞炖蘑菇 | 来源:发表于2017-02-28 14:46 被阅读0次

    在浏览器操作中,需要利用Javascript在用户浏览器中本地存储一些数据,以达到一些不能用服务器来识别的功能,如识别用户的第二次访问等。
    本地存储的三种方式:cookie localStorage sessionStorage.
    区别:cookie数据始终在同源的[http请求]中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下,子级可以访问父级,而父级不可以访问子级,一般一个网站共享一套cookie。存储大小限制也不同,cookie数据不能超过[4k],而且部分浏览器有条数限制,如IE6,只支持每个域名20个cookies,同时因为每次[http请求]都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。
    cookie设置:

        function setCookie(key,value,iDay){
                  var key = encodeURIComponent(key);
                  var value = encodeURIComponent(value);
            var oDate = new Date();
            if(iDay){
                document.cookie =key + '=' + value +';PATH=/; EXPIRES=' + oDate.setDate(oDate.getDate() + iDay).toGMTString();
            }else{
                document.cookie = key + '=' + value + '; PATH=/;';
            }
        }
    

    cookie读取:

        function getCookie(key){
                   var key = encodeURIComponent(key);
            var arr = document.cookie.split('; '),
                i,
                len = arr.length;
            for(i=0; i<len; i++){
                var arr2 = arr[i].split('=');
                if(arr2[0] == key){
                    return decodeURIComponent(arr2[1]);
                }
            }
        }
    

    cookie删除:

        function removeCookie(key){
                  var key = encodeURIComponent(key);
            //利用cookie的过期机制,其中value值任意填写;
            setCookie(key,'rem',-1);
        }
    

    localStorage和sessionStorage书写方式一样,都有两种书写方式:
    存值:

      localStorage.a = '存值';
    或:
    localStorage.setItem('a','存值');
    

    取值:

    alert(localStorage.a);
    或:alert(localStorage.getItem('a'));
    

    删除:

    delete localStorage.a;
    或:localStorage.removeItem('a');
    

    删除全部:

    localStorage.clear();
    

    相关文章

      网友评论

          本文标题:浏览器本地存储

          本文链接:https://www.haomeiwen.com/subject/lquxgttx.html