web存储

常见的web存储主要有cookie、sessionstorage、localstorage三个,这里分别记录三者的用法以及区别

1.cookie

每次http请求都会在请求头cookie中发送到服务器,比如我们打开csdn时,在控制台找到一个XHR

cookie是有大小限制的,差不多4KB,当超过这个最大尺寸限制,该cookie会被默认丢掉。

cookie有几个信息组成:名称、值、域、路径、失效时间、安全标志。

名称和值需要经过URL编码,就是在我们设置cookie时,需要调用encodeURIComponent()包装一下。

js中访问和设置cookie使用的是document.cookie属性,打印csdn个人主页下的cookie

输出的是name1=value1;name2=value2;name3=value3这样的字符串

设置cookie时,只会添加新的一条cookie,或者当前cookie名已经存在才会覆盖。例如:

document.cookie = encodeURIComponent('name') + '=' + encodeURIComponent('tom') + ';domain=wrox.com;path=/'

由于JS中的读写cookie没有特定的接口函数,不太方便,所以我们可以封装一个CookieUtil对象

var CookieUtil = {
    // 获取指定的cookie
    get(name) {
        var cookieName = encodeURIComponent(name) + '=',
        cookieStart = document.cookie.indexOf(cookieName),
        cookieValue = null;
        // 如果cookie中有指定的cookie
        if(cookieStart > -1){
            var cookieEnd = document.cookie.indexOf(';',cookieStart);
            if(cookieEnd === -1){
                cookieEnd = document.cookie.length;
            }
            cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd))
        }
        return cookieValue;
    },
    // 设置cookie
    set(name,value,expires,path,domain,secure){
        var cookieText = encodeURIComponent(name) + '=' + encodeURIComponent(value);
        if(expires instanceof Date){
            cookieText += ';expires=' + expires.toUTCString();
        }
        if(path){
            cookieText += ';path=' + path;
        }
        if(domain){
            cookieText += ';domain=' + domain; 
        }
        if(secure){
            cookieText += ';secure';
        }
        document.cookie = cookieText;
    },
    // 删除cookie
    unset(name,path,domain,secure){
        this.set(name,'',new Date(0),path,domain,secure);
    }
}

内部创建了三个方法,get()获取指定cookie值,set()设置一条cookie,unset()通过设置cookie失效时间为过去时间,来删除一条cookie

也可以使用jQuery的cookie插件来更加方便的管理cookie。

2.sessionStorage

sessionStorage对象存储特定的某个会话的数据,保持数据到浏览器关闭。数据只在相同协议、相同域名、相同接口下的页面之间共享。

例如我在csdn主页下设置sessionStorage的一个值,然后我在个人首页下可以访问的到。

// 使用方法存储数据

sessionStorage.setItem('name', 'tom');、

// 使用方法获取数据

sessionStorage.getItem('name');

比较常用于页面的广告显示和关闭,当关闭页面的广告时,设置一个true值存储到sessionStorage中,刷新页面或者访问页面其他子页面时,广告就不会显示。当关闭浏览器重新打开页面,广告就会再次显示出来。

3.localStorage

localStorage对象存储的值会一直保存在浏览器客户端,关闭浏览器后再次打开仍然存在。这一点和sessionStorage不一样,可以设置一些用户偏好设置。存储数据和获取数据的方法也是setItem() getItem()

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值