cookie&llocalstorage&sessionStorage

cookie存储

基本介绍:

  1. web存储相关的技术:cookie | sessionStorage | localStorage |应用缓存

  2. cookie是一种会话跟踪技术,用于在进行网页访问的时候,存储页面中的某些数据信息。
    cookie的使用注意点:

    1. 使用cookie来进行数据存储的大小有限制,4KB;
    2. 每个网页中存储cookie的个数(最多50)和每个网站中存储cookie的个数都有限制(200);
    3. 各个不同的浏览器对cookie的数量也不相同.

    IE6.0:每个域为20个,大小为4095个字节;
    IE7.0/8.0:每个域为50个 ,大小为4095个字节;
    Opera:每个域为30个 ,4096个字节;
    FF:每个域为50个 ,大小为4097个字节;
    Safari:没有个数限制,大小为4097个字节;
    Chrome:每个域为53个,大小为4097个字节;
    总结:在进行页面cookie操作的时候,应该尽量保证cookie个数小于20个,总大小 小于4KB

    1. cookie数据的过期时间

      1. 默认情况下,cookie存储的内容是一次性的,它的有效期间是当前会话(需要把整个浏览器都关闭会话就结束)
      2. 设置过期时间:通过expires=time;的格式来进行指定, 设置了之后只要没有超过过期时间,那么数据将一直都在
    2. cookie是不可以跨浏览器的(在IE中保存的cookie, 不可以在火狐中使用)

    3. cookie是不可以跨域的(跨域名)
      示例:127.0.0.1/code/test.html 和127.0.0.1/code/test1.html可以访问
      网络请求的常见路径:
      http://www.baidu.com:80/资源
      协议://域名.后缀:端口号/资源
      不能跨域的含义:就是只有 (协议+域名+后缀+端口)号都相同才能相互访问
      http://www.baidu.com:80/a.html
      http://www.baidu.com:80/b.html

       http://www.baidu.com:81/a.html
       http://www.baidu.com:80/b.html 不能(端口号不相同)
      
       http://mp3.baidu.com:80/a.html
       http://map.baidu.com:80/b.html 不能(二级域名不相同)
      
       https://www.baidu.com:80/a.html
       http://www.baidu.com:80/b.html 不能(协议不相同)
      
       http://www.bdu.com:80/a.html
       http://www.dbu.com:80/b.html 不能(以及域名不相同)
      
cookie的设置和使用
  1. 设置方法:
    设置cookie数据:document.cookie = "name=zhangsan";
    设置cookie数据和过期的时间:document.cookie = "name=zhangsan; expires="+date+";";
    过期7天的设置:var date = new Date(); // date.setDate(date.getDate() + 7);
  2. 使用注意:
    在设置cookie的时候,一次只能设置一个数据(一个键值对),不能进行批量设置
    错误的演示:window.cookie = "name=zhangsan&age=18";
    示例代码
    //设置三个cookie的值,默认的过期时间是seesion(会话内)
    document.cookie = "name=wendingding";
    document.cookie = "age=18";
    document.cookie = "des=12345";

    //设置cookie的值,并指定过期的时间
    var date = new Date();
    date.setDate(date.getDate() + 3);   //3天的过期时间

    //注意:在设置过期时间的时候,中间使用;分隔开发
    document.cookie = "color=red;expires="+date;


    //删除cookie
    //删除cookie的原理:只要过期时间超过了当前的时间, 数据就会被删除
    date.setDate(date.getDate() + -1);
    document.cookie = "age=18; expires="+date+";";
cookie相关方法的封装
  1. 读取某个cookie的值(需要做切割处理)
    document.cookie = "name=zhangsan";
    document.cookie = "age=18";
    console.log(document.cookie);
    //01 获取某个key对应的cookie值
    function getCookie(key) {
        //01 先对获取的字符串进行切割,获取得到数组
        var arrM = document.cookie.split(";");
        console.log(arrM);
        //02 遍历数组
        for (var i = 0,len = arrM.length;i<len;i++)
        {
            //03 对数组中取出来的每个元素再进行切割
            var arrT = arrM[i].split("=");
            var res = arrT[0].replace(" ","");
            if(res == key)
            {
                return arrT[1];
            }
        }
    }
    console.log(getCookie("age"));
  1. 添加cookie数据(需要判断是否要设置过期时间)
 //添加单个cookie的值
    function addCookie(key,value,date) {
        //01 判断是否需要设置过期时间
        if (arguments.length == 2)
        {
            document.cookie = key + "=" + value;
        }else if (arguments.length == 3)
        {
            //02 设置过期时间
            var dateM = new Date();
            dateM.setDate(dateM.getDate() + date);
            var res = key + "=" + value +";" + "expires="+dateM;
            document.cookie = res;
        }
    }
    addCookie("haha","wuwuwuw",2);
  1. 删除cookie数据(利用过期时间和添加cookie的方法实现)
  //删除cookie数据:原理(当前的时间超过了cookie的过期时间那么该数据就会被删除)
    function removeCookie(key){
        //重新设置某个cookie的过期时间
        addCookie(key,"",-1);
    }
    removeCookie("haha");
使用cookie存储技术来记住页码

使用cookie技术来处理微博项目说明

  1. 之前的微博项目中还存在一些问题,如果当前的页面是第二页,那么此时刷新页面会自动跳转到默认显示的第一页
  2. 要求在进行刷新的时候,显示的还是当前页的数据
    具体实现思路:在代码中获取当前的pageNumber,那么当页面加载完成之后就调用方法传递pageNumber作为参数刷新指定页的数据
    具体实现:
    1. 在点击页码的时候拿到当前的页码,通过page.text()
    2. 在切换页码选中状态之后,添加代码:addCookie("pageNumber",$(this).text());
    3. 在按钮点击之前(页面加载完成之后)获取页码,var pageNumber = getCookie("pageNumber") || 1;
    4. 在获取默认显示微博列表数据的位置,把获取第一页的数据修改成获取第pageNumber页的数据
    5. 处理默认选中的页码:oPage.child

sessionStorage存储

简单说明

1. 在存储用户数据的时候,因为cookie可以存储的数据比较小才4KB左右,所以也可以考虑使用sessionStorage来存储,大小限制为2M左右
2. 该技术和localStorage是h5推出的,因此在使用的时候,需要考虑到兼容性的问题
3. 相关资料:http://www.w3school.com.cn/html5/html_5_webstorage.asp
4. 简单介绍和使用:
    001 sessionStorage:会话存储技术(session-会话)
    002 该技术和cookie一样,一样浏览器退出了,那么保存的数据就会
    003 演示sessionStorage技术的相关操作
        添加|获取|更新|删除|清空

示例代码

<input type="text">
<button class="btn1">添加</button>
<button class="btn2">获取</button>
<button class="btn3">更新</button>
<button class="btn4">删除</button>
<button class="btn5">清空</button>
<script>
    window.sessionStorage.setItem("age","18");
    window.sessionStorage.setItem("color","red");
    window.sessionStorage.setItem("des","no des");
    var oInput = document.querySelector("input");
    var oBtn1 = document.querySelector(".btn1");
    oBtn1.onclick = function () {
        //添加操作
        window.sessionStorage.setItem("name",oInput.value);
    };
    var oBtn2 = document.querySelector(".btn2");
    oBtn2.onclick = function () {
        //获取操作
        console.log(window.sessionStorage.getItem("name"));
    };
    var oBtn3 = document.querySelector(".btn3");
    oBtn3.onclick = function () {
        //更新操作
        window.sessionStorage.setItem("name",oInput.value);
    };
    var oBtn4 = document.querySelector(".btn4");
    oBtn4.onclick = function () {
        //删除操作
        window.sessionStorage.removeItem("name");
    };
    var oBtn5 = document.querySelector(".btn5");
    oBtn5.onclick = function () {
        //清空操作
        window.sessionStorage.clear();
    };
</script>

localStorage存储

简单说明

1. 简单对比:保存在本地 + 没有时间限制
2. 大小比较:4K - 5M - 20M
3. 使用方式和sessionStorage相同

示例代码

<input type="text">
<button class="btn1">添加</button>
<button class="btn2">获取</button>
<button class="btn3">更新</button>
<button class="btn4">删除</button>
<button class="btn5">清空</button>
<script>
    window.localStorage.setItem("age","18");
    window.localStorage.setItem("color","red");
    window.localStorage.setItem("des","no des");
    var oInput = document.querySelector("input");
    var oBtn1 = document.querySelector(".btn1");

    oBtn1.onclick = function () {
        //添加操作
        window.localStorage.setItem("name",oInput.value);
    };
    var oBtn2 = document.querySelector(".btn2");
    oBtn2.onclick = function () {
        //获取操作
        console.log(window.localStorage.getItem("name"));
    };

    var oBtn3 = document.querySelector(".btn3");
    oBtn3.onclick = function () {
        //更新操作
        window.localStorage.setItem("name",oInput.value);
    };
    var oBtn4 = document.querySelector(".btn4");
    oBtn4.onclick = function () {
        //删除操作
        window.localStorage.removeItem("name");
    };
    var oBtn5 = document.querySelector(".btn5");
    oBtn5.onclick = function () {
        //清空操作
        window.localStorage.clear();
    };
</script>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Se...
    chinariver阅读 5,588评论 1 49
  • Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在...
    饥人谷_陆邈阅读 1,449评论 1 5
  • 原文链接:https://segmentfault.com/a/1190000004556040[https://...
    R_X阅读 416评论 0 1
  • 岁月不停的奔跑,带走的是时光,是不再年少的心,却带不走珍藏在心里的美好记忆。人生就是这样, 时光走远了,人群走散了...
    子皿悠悠阅读 583评论 0 7
  • 2810.7.5 星期四 晴 进入暑假时间! 暑假给孩子好的计划重要100倍! 阅读量对于作文写作的作用及其重视,...
    陈一宁妈妈阅读 408评论 0 7