• cookie (浏览器缓存)


    cookie 其实是个后端技术

    指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常是经过加密的)

    服务器本身是没有记录客户端身份的方法的。

    以前是字字千金,一个域下只能设置几十个,而现在据说有5M(5兆)

     

    对于前端来说,种cookie就是给document设置了一个叫做cookie的自定义属性,这个属性能被所有浏览器识别,并缓存在浏览器中。

    写(设置)cookie 一定要在服务器环境下运行。

    设置 cookie :

      document.cookie = key = val

      设置 cookie 都会调用 toString 

    读取:

      document.cookie

      返回的结果是把这个域中所有的cookie都显示出来了。每个key=val 都是以 (分号加空格)分割的

    cookie 的默认生命周期是当浏览器关闭以后就结束。不过可以通过 expires 去设置生命周期

      比如:  document.cookie = ' name=xyf2 ' + ' expires= ' + 未来的时间点

     

    哪里会用到cookie ?? :

      猜你喜欢、身份验证、每日推荐、免登陆。。。

     

    cookie的好处:

      1.生命周期是可以设置的。而 localStorage 的内容只要不清一直都在。

      2.可以把常用的重要的数据缓存起来,减少 http 请求

     

    cookie 的设置、获取、移除

        function getCookie(key){//获取cookie的时候,会把所有的cookie都获取出来,并且以分号加空格(; )来划分每一个cookie
            let c = document.cookie.split('; ');//获取到一堆cookie后用分号加空格切一刀
            let on = false;
            for(let i of c){
                let arr = i.split('=');//每条数据都有‘name’=‘val’,所以在用(=)切一刀
                if(arr[0] === key){
                    on = true;
                    return arr[1];
                }
            }
            if(!on)return null;
        }
    
        function setCookie(key,val,obj={}){
            let d = new Date();
            let {name,time} = obj;//解构赋值
            switch(name){
                case 'date' :
                    d.setDate(d.getDate() + time);//这行的console 结果是时间戳
                break;
                case 'minu' :
                    d.setMinutes(d.getMinutes() + time);
                break;
                case 'hour' :
                    d.setHours(d.getHours() + time);
                break;
            }
            document.cookie = key +'='+ JSON.stringify(val) + (obj.time?'; expires='+ d.toUTCString:'');//拼接cookie
    //d.toUTCString 时间到了刷新页面就清除cookie,只用 d 需要关闭页面再打开才会清除过期的cookie 
        }
        // setCookie('age',12);
        // setCookie('age',12,{name:'hour',time:5});
        // console.log(getCookie('name'));
    
        function rmCookie(key,val){//删除cookie,也可以直接在控制台中删,也可以给cookie设置时间,时间到了就会移除
            setCookie(key,val,{name:'date',time:-1}); //根据key来得到需要删除的cookie,将该cookie设置截止时间为负数即可
        }
    
        let arr = {a:1};
        setCookie('name',arr,{name:'date',time:1});
    
        console.log( getCookie('name'));

     

     

     

    2018-12-14

  • 相关阅读:
    按某列分表程序
    vba里设置读取背景和字体颜色
    今天写代码的一点心得!
    vba十进制转二进制
    我的心情
    数据按列拆分(可选择)
    HashMap源码分析(一):JDK源码分析系列
    HashMap源码分析(二):看完彻底了解HashMap
    JDK源码阅读(三):ArraryList源码解析
    SpringBoot使用Docker快速部署项目
  • 原文地址:https://www.cnblogs.com/MrZhujl/p/10118343.html
Copyright © 2020-2023  润新知