HTML要命一百天 -- 第五天【Web Storage】

Web Storage

Web Storage是HTML5中本地存储的解决方案之一。
在H5之前,各种浏览器的本地存储方式花样百出,如IE User Data、Flash Cookie、Google Gears等,而cookies在存储上又有诸多的限制,因此,Web Storage的引入解决了众多浏览器的兼容问题。
Web Storage实际上由两部分组成:sessionStoragelocalStorage,它们都属于window对象下的属性,具体区别如下:

sessionStorage localStorage
大小 一般为5MB 一般为5MB
生命周期 可永久,可主动删除 标签页或者浏览器关闭即删除
访问权限 特定于页面协议,当前域下的页面 特定于页面协议,存在于当前会话和域下的页面
数据格式 以字符串的形式存储的键值对 以字符串的形式存储的键值对

如何使用

sessionStoragelocalStorage有相同的属性方法:

  • setItem(key, value):添加或者更新键为key和值为value的数据;
  • getItem(key):获取键为key对应的value值;
  • removeItem(key):移除键为key数据;
  • key(n):返回存储对象中第 n 个键的名称;
  • clear():清除存储对象中所有的键;
setItem
sessionStorage.setItem('reus', 11);
localStorage.setItem('reus', 12);

  在开发者工具分别观察到sessionStoragelocalStorage的值:

getItem
const [session, local] = [
  sessionStorage.getItem('reus'),
  localStorage.getItem('reus'),
];
console.log(session, local);

  控制台打印的值:
key
sessionStorage.key(n);
localStorage.key(n);

  以sessionStorage为例,在sessionStorage存下如下图数据:


  即可用key(n)获取sessionStorage下的第n个key值,如下图:

removeItem
sessionStorage.removeItem('reus');
localStorage.removeItem('reus');

  在谷歌开发者工具可以看到sessionStoragelocalStorage已经没有reus键值对了,图略。

clear
sessionStorage.clear();
localStorage.clear();

  效果与removeItem(key)相同,不同的是removeItem(key)只是清除一项,而clear()清除所有的sessionStoragelocalStorage存储

番外 -- 个人理解和思考
  Web Storage的出现真的给前端带来了很多方便,现在几乎所有网站都会用到,而且兼容性也比较好,操作和使用难度也很低。但对于前端日益强大的趋势,仅仅5MB的存储空间可能不能满足一些需求,假如放一个数据表在前端,可能就无法满足了。而且,如果存储的键值对较多,对于获取数据可能就超级麻烦了,缺乏通过索引的方式查找数据,而且存储的数据都被转成字符串,所以,对于涉及数据操作层面来说,它又显得特别麻烦,所以新的存储方式IndexedDB就是为了适应此场景而生。
  各位,互勉!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容