HTML5 sessionStrage localStorage cookie

sessionStrage 是HTML5新增的会话存储对象,不具有跨域等一切异/多 页面操作 ,用于临时保存同一窗口(标签页)的数据,在窗口关闭或浏览器关闭将会删除这些数据。

与之相对应的有 localStorage 将数据保存在客户端硬件设备上,不管它是什么,意思就是下次打开计算机时候数据还在。

下面详细对于前端页面缓存进行整理一下:

前端缓存有 cookie sessStrage  localStorage 三种。

1.cookie 

1)大小限制。cookie大小限制在4k左右,不适合存业务数据,多用于身份认证

2)随HTTP事务发送。cookie每次都会随HTTP事务一起发送,一般请求会占用浪费带宽

1.1应用

js设置cookie

document.cookie="popped=yes"
var cookie = {//封装好的方法
    set:function(key,val,time){//设置cookie方法
        var date=new Date(); //获取当前时间
        var expiresDays=time;  //将date设置为n天以后的时间
        date.setTime(date.getTime()+expiresDays*24*3600*1000); //格式化为cookie识别的时间
        document.cookie=key + "=" + val +";expires="+date.toGMTString();  //设置cookie
    },
    get:function(key){//获取cookie方法
        /*获取cookie参数*/
        var getCookie = document.cookie.replace(/[ ]/g,"");  //获取cookie,并且将获得的cookie格式化,去掉空格字符
        var arrCookie = getCookie.split(";")  //将获得的cookie以"分号"为标识 将cookie保存到arrCookie的数组中
        var tips;  //声明变量tips
        for(var i=0;i<arrCookie.length;i++){   //使用for循环查找cookie中的tips变量
            var arr=arrCookie[i].split("=");   //将单条cookie用"等号"为标识,将单条cookie保存为arr数组
            if(key==arr[0]){  //匹配变量名称,其中arr[0]是指的cookie名称,如果该条变量为tips则执行判断语句中的赋值操作
                tips=arr[1];   //将cookie的值赋给变量tips
                break;   //终止for循环遍历
            }
        },
delete:function(key){ //删除cookie方法
var date = new Date(); //获取当前时间
date.setTime(date.getTime()-10000); //将date设置为过去的时间
document.cookie = key + "=v; expires =" +date.toGMTString();//设置cookie
} return tips; } }

 

jQuery 操作cookie

$.cookie('the_cookie', 'the_value');
//添加一个"会话cookie"
$.cookie('the_cookie','the_value',{
    expires:7,  
    path:'/',
    domain:'jquery.com',
    secure:true
})
//expires:(Number|Date)有效期;设置一个整数时,单位是天;也可以设置一个日期对象作为Cookie的过期日期;
//path:(String)创建该Cookie的页面路径;
//domain:(String)创建该Cookie的页面域名;
//secure:(Booblean)如果设为true,那么此Cookie的传输会要求一个安全协议,例如:HTTPS;

2.sessStrage

1) 同源策略限制。若想在不同页面之间对同一个sessionStorage进行操作,这些页面必须在同一协议、同一主机名和同一端口下。(IE 8和9存储数据仅基于同一主机名,忽略协议(HTTP和HTTPS)和端口号的要求)

2) 单标签页限制。sessionStorage操作限制在单个标签页中,在此标签页进行同源页面访问都可以共享sessionStorage数据。

3) 只在本地存储。seesionStorage的数据不会跟随HTTP请求一起发送到服务器,只会在本地生效,并在关闭标签页后清除数据。(若使用Chrome的恢复标签页功能,seesionStorage的数据也会恢复)。

4) 存储方式。seesionStorage的存储方式采用key、value的方式。value的值必须为字符串类型(传入非字符串,也会在存储时转换为字符串。true值会转换为"true")。

5) 存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在5MB以下

js设置sessionStorage

// 保存数据到sessionStorage
sessionStorage.setItem('key', 'value');
// 从sessionStorage获取数据
var data = sessionStorage.getItem('key');
// 从sessionStorage删除保存的数据
sessionStorage.removeItem('key');
// 从sessionStorage删除所有保存的数据
sessionStorage.clear();

 

jQuery 操作sessionStorage

// 保存数据到sessionStorage

$.session.set('key', 'value')

// 从sessionStorage获取数据

 $.session.get('key');

// 从sessionStorage删除保存的数据
$.session.remove('key');

// 从sessionStorage删除所有保存的数据

 $.session.get('key');

 

3.localStorage

1)localStorage没有大小限制。限制的是浏览器对localStorage的限制 约500万字符左右,个浏览器不一致。

2)localStorage隐私模式不可读取。浏览器在设置成无痕浏览或者隐私模式时localStorage不可读取。

3)localStorage不能被爬虫获取。本质是在读写文件,不要用它完全取代URL传参,数据多的话会比较卡(Firefox会一次行将数据导入内存,想想就感觉吓人)。

4)localStorage没有时间限制。只要不手动清除缓存就会一直存在,如果后台设置有效时间,过期之后数据还是存在不过不可用

JS下的操作方法

  • 获取键值:localStorage.getItem(“key”)
  • 设置键值:localStorage.setItem(“key”,”value”)
  • 清除键值:localStorage.removeItem(“key”)
  • 清除所有键值:localStorage.clear()
  • 获取键值2:localStorage.keyName
  • 设置键值2:localStorage.keyName = “value”

JQ下的操作方法(JS方法前加”window.”)

  • 获取键值:window.localStorage.getItem(“key”)
  • 设置键值:window.localStorage.setItem(“key”,”value”)
  • 清除键值:window.localStorage.removeItem(“key”)
  • 清除所有键值:window.localStorage.clear()
  • 获取键值2:window.localStorage.keyName
  • 设置键值2:window.localStorage.keyName = “value”

demo:

复制代码
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" charset="utf-8" src="js/jquery.min.js"></script>
    <script type="text/javascript">
        // JS操作部分
        localStorage.JSa="JSA";
        document.write(localStorage.JSa);
        localStorage.setItem('JSb','&nbsp;JSB');
        document.write(localStorage.getItem('JSb'));
        // JQuery操作部分
        $(function(){
            window.localStorage.JQa="JQA";
            $("#a").text(window.localStorage.JQa);
            window.localStorage.setItem('JQb','JQB');
            $("#b").text(window.localStorage.getItem('JQb'));
        });
    </script>
</head>
<body>
    <p id="a"></p>
    <p id="b"></p>
</body>
</html>





posted @ 2018-11-29 11:31  韩冷耀  阅读(321)  评论(0编辑  收藏  举报