HTML5本地存储之WebStorage是什么

  介绍

这篇文章将为大家详细讲解有关HTML5本地存储之WebStorage是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

WebStorage是HTML5中本地存储的解决方案之一,在HTML5的WebStorage概念引入之前除去IE用户数据,Flash Cookie, Google Gears等看名字就不靠谱的解决方案,浏览器兼容的本地存储方案只有使用饼干。有同学可能会问,既然有了饼干本地存储,为什么还要引入WebStorage的概念吗?

饼干肿么了

饼干的缺陷是非常明显的

1。数据大小:作为存储容器,饼干的大小限制在4 kb左右这是非常坑爹的,尤其对于现在复杂的业务逻辑需求,4 kb的容量除了存储一些配置字段还简单单值信息,对于绝大部分开发者来说真的不知指望什么了。

2。安全性问题:由于在HTTP请求中的饼干是明文传递的(HTTPS不是),带来的安全性问题还是很大的。

3。网络负担,我们知道饼干会被附加在每个HTTP请求中,在HttpRequest和HttpResponse的标题中都是要被传输的,所以无形中增加了一些不必要的流量损失。

WebStorage

WebStorage是HTML新增的本地存储解决方案之一,但并不是为了取代饼干而制定的标准,饼干作为HTTP协议的一部分用来处理客户端和服务器通信是不可或缺的,会话正是依赖于实现的客户端状态保持.WebStorage的意图在于解决本来不应该饼干做,却不得不用饼干的本地存储。

WebStorage提供两种类型的API: localStorage和sessionStorage,两者的区别看名字就有大概了解,localStorage在本地永久性存储数据,除非显式将其删除或清空,sessionStorage存储的数据只在会话期间有效,关闭浏览器则自动删除。两个对象都有共同的API

接口存储{   只读的属性无符号长长度;   DOMString吗?键(无符号长指数);   getter DOMString getItem (DOMString键);   setter创造者空白setItem (DOMString关键,DOMString价值);   删除人空虚removeItem (DOMString键);空白clear ();   };
    <李>长度:唯一的属性,只读,用来获取存储内的键值对数量。 <李>关键:根据指数获取存储的键名李 <>李getItem:根据关键获取存储内的对应值 <李> setItem:为存储内添加键值对李 <>李removeItem:根据键名,删除键值对李 <>李明确:清空存储对象李

使用

在实现了WebStorage的浏览器中,页面有两个全局的对象localStorage sessionStorage和

 HTML5本地存储之WebStorage是什么

以localStorage为例,看一段简单的操作代码

var ls=localStorage;   console.log (ls.length);//0   ls.setItem(& # 39;名字# 39;,& # 39;拜伦# 39;);   ls.setItem(& # 39;年龄# 39;,& # 39;24 & # 39;);   console.log (ls.length);//2//遍历localStorage   我(var=0; i< ls.length;我+ +){/*   年龄:24   名称:拜伦   */var关键=ls.key(我);   console.log(键+ & # 39;:& # 39;+ ls.getItem(键));   }      ls.removeItem(& # 39;年龄# 39;);      我(var=0; i< ls.length;我+ +){/*   名称:拜伦   */var关键=ls.key(我);   console.log(键+ & # 39;:& # 39;+ ls.getItem(键));   }   ls.clear ();//0   console.log (ls.length);

事件

同时HTML5规定了一个存储事件,在WebStorage发生变化的时候触发,可以用此监视不同页面对存储的修改

接口StorageEvent:事件{   只读的属性DOMString关键;   DOMString只读的属性?oldValue;   DOMString只读的属性?newValue;   只读的属性DOMString url;   只读的属性存储?storageArea;   };
    <李>关键:键值对的键 <李> oldValue:修改之前的价值 <李> newValue:修改之后的价值 <李> url:触发改动的页面url李 <李> StorageArea:发生改变的存储李

在索引。php中定义

& lt; a href=https://www.yisu.com/zixun/皌est.php”目标="平等"> 测试 window.addEventListener(& # 39;存储# 39;函数(e) {   console.log (e.key + & # 39;改变形式& # 39;+ e.oldValue + & # 39;& # 39;+ e.newValue + & # 39;& # 39;+ e。url);   console.log (e。storageArea==localStorage);   },假);      localStorage.setItem(& # 39;用户名# 39;,& # 39;拜伦# 39;);

测试。php

localStorage.setItem(& # 39;用户名# 39;& # 39;卡斯珀# 39;);

在index . php页面点击链接访问test.php时可以看到索引。php的控制台输出日志:

HTML5本地存储之WebStorage是什么