浅谈浏览器的本地存储

426 阅读2分钟

一、本地存储是干嘛用的?

开发过程中当我用刷新页面时,页面的数据会被清空,为了保存我们需要的信息,浏览器给我们提供cookielocalStoragesessionStorage这三个方法来把信息保存到浏览器本地存储中,防止刷新页面清空数据。

在浏览器的Application查看:

二、cookie的基本使用

document.cookie = 'lgf' // 存储cookie
console.log(document.cookie) // 获取cookie

如果想更灵活的操作cookie,可以把cookie的保存,读取,删除封装成方法来调用

设置cookie

function setCookie(key, value, t) {
    var oDate = new Date();  //创建日期对象
    oDate.setDate( oDate.getDate() + t ); //设置过期时间
    document.cookie = key + '=' + value + ';expires=' + oDate.toGMTString();  //设置cookie的名称,数值,过期时间
}

// 使用方法:setCookie(cookie名称,cookie数值,过期时间(天))
setCookie('sex','男', 10);

获取cookie的单个数值

function getCookie(key) {
    var arr1 = document.cookie.split('; '); //将cookie按“; ”分割,数组元素为: cookie名=cookie值
    for (var i=0; i<arr1.length; i++) {  //分割数组里的每个元素
        var arr2 = arr1[i].split('='); //按照“=”分割
        if ( arr2[0] == key ) { //如果数组的第一个元素等于给定的cookie名称
            return decodeURI(arr2[1]);  //返回翻译编码后的cookie值
        }
    }
}

// 使用方法:getCookie(cookie名称)
getCookie('username');

删除cookie

function removeCookie(key) {
    setCookie(key, '', -1);  //cookie的过期时间设为昨天,浏览器会自动删除cookie
}

// 使用方法:removeCookie(cookie名称)
removeCookie('age');

三、localstorage和sessionStorage的基本使用

localstoragesessionStorage的基本使用是差不多的改一下名称就好

sessionStorage.setItem(name,value);//存储数据
sessionStorage.valueOf();//获取全部数据
sessionStorage.getItem(name);//获取指定键名数据
sessionStorage.removeItem(name); //删除指定键名数据
sessionStorage.clear();//清空缓存数据

就这几行代码保存基本数据类型基本够用了,如过要保存对象数组这需要转换一下数据类型才行

sessionStorage.setItem(name,JSON.stringfy(value)); //存储数据
sessionStorage.getItem(JSON.parse(name));

也可以把localstoragesessionStorage封装一下,比如数据加密什么的,它更好用,这里就不做操作了

四、三者的异同

对比cookielocalStoragesessionStorage
生命周期可以设置过期时间,不设置,默认情况关闭浏览器就自动清除除非手动清除,否则永久保存只在当前页面有效,关闭页面或浏览器会自动清除
存放数据大小能存4KB左右,各浏览器的cookie存储大小和个数限制也不一样可以保存5MB的信息可以保存5MB的信息
http请求cookie可以参与通信,但如果使用cookie保存过多数据会带来性能问题不参与服务端的通信不参与服务端的通信
易用性对开发者来说并不友好,要手动封装浏览器提供源生的API,也可以二次封装浏览器提供源生的API也可以二次封装

最后

这三个东西虽然好用,但是安全性低,重要的信息还是保存到数据库吧。