web本地存储技术-cookie、sessionStorage和localStorage

1.cookie

  存储在用户本地终端上的数据,会随请求发送到服务器端,常见用法是存储用户登录成功后的密码,以便判别用户的登录状态和身份。浏览器端可用javascript来操作cookie,通过document.cookie对cookie中的数据进行存取操作,在存储时可设置路径(path)和有效时长(expires)。cookie在过期时间之前一直有效,即使窗口和浏览器关闭;若不设置expires,则默认有效时间截止到关闭浏览器;若要删除cookie,可将expires设置为过去的时间。为了方便操作cookie中的数据,可封装成set、get和delete三个方法,javascript示例代码如下:

 1 /** 
 2  *  @Desc: Cookie方法的封装
 3  *  @param: timeStr d 结尾表示天数
 4  *               h 结尾表示小时
 5  *               m 结尾表示分钟
 6  **/
 7 export default {
 8   set: function (key, val, timeStr) {//设置cookie方法
 9     try {
10       if (timeStr) {
11         var date = new Date(); //获取当前时间
12         var time = parseInt(timeStr.substring(0, timeStr.length - 1));
13         // var expiresDays = time;  //将date设置为n天以后的时间
14         switch (timeStr.charAt(timeStr.length - 1).toLowerCase()) {
15           case 'd':
16             time *= 24 * 3600 * 1000;
17             break;
18           case 'h':
19             time *= 3600 * 1000;
20             break;
21           case 'm':
22             time *= 60 * 1000;
23             break;
24           default:
25             break;
26         }
27         date.setTime(date.getTime() + time); //格式化为cookie识别的时间
28         document.cookie = key + "=" + val + ";expires=" + date.toGMTString();  //设置cookie
29       } else {
30         document.cookie = key + "=" + val;  //设置cookie
31       }
32     } catch (e) {
33       console.error(e.message);
34     }
35   },
36   get: function (key) {//获取cookie方法
37     /*获取cookie参数*/
38     var getCookie = document.cookie.replace(/[ ]/g, "");  //获取cookie,并且将获得的cookie格式化,去掉空格字符
39     var arrCookie = getCookie.split(";");  //将获得的cookie以"分号"为标识 将cookie保存到arrCookie的数组中
40     var tips;  //声明变量tips
41     for (var i = 0; i < arrCookie.length; i++) {   //使用for循环查找cookie中的tips变量
42       var arr = arrCookie[i].split("=");   //将单条cookie用"等号"为标识,将单条cookie保存为arr数组
43       if (key == arr[0]) {  //匹配变量名称,其中arr[0]是指的cookie名称,如果该条变量为tips则执行判断语句中的赋值操作
44         tips = arr[1];   //将cookie的值赋给变量tips
45         break;   //终止for循环遍历
46       }
47     }
48     return tips;
49   },
50   delete: function (key) { //删除cookie方法
51     var date = new Date(); //获取当前时间
52     date.setTime(date.getTime() - 10000); //将date设置为过去的时间
53     document.cookie = key + "=v; expires =" + date.toGMTString();//设置cookie
54   }
55 };

2. sessionStorage和localStorage

sessionStorage和localStorage是HTML5提供本地存储数据的两个新方法,只保存在客户端(即浏览器),不参与和服务器之间的通信。这两种存储技术的使用方法相同,都有保存setItem、获取getItem、删除removeItem、清空clear等方法。

sessionStorage.setItem("userName", "Tom");    //设置
sessionStorage.getItem("userName");    //获取
sessionStorage.removeItem("userName");    //删除
sessionStorage.clear();    //清空

 

3. cookie、sessionStorage和localStorage的异同(都遵循同源策略)

共同点:都是保存在浏览器中,且是同源的。

不同点:

  • 参与方式:cookie数据始终在同源的http请求中携带(即使不需要),即在浏览器和服务器之间来回传递;cookie数据还有路径path概念,可将cookie限制在某一路径下。 而sessionStorage和localStorage只保存在本地,不参与客户端和服务器端之间的通信。
  • 存储大小:cookie最多只能存储4KB大小的数据,因为每次http请求都会携带,所以不适合存放大量的数据。而sessionStorage和localStorage存储的数据要比cookie大很多,可以达到5MB或更大。
  • 数据有效期不同:cookie,若不设置expires,则在关闭浏览器后失效;若设置expires,则在有效时间过期之前一直有效,即使浏览器关闭。sessionStorage中的数据只在浏览器当前选项卡中有效,一旦关闭则立刻失效。localStorage中的数据一直有效,直到手动删除或清空。

 参考文章链接:

cookie、 sessionStorage 、localStorage之间的区别和使用

 

posted @ 2017-07-09 17:33  boy幽  阅读(274)  评论(0)    收藏  举报