谈一谈HTML5本地存储技术


Posted in HTML / CSS onMarch 02, 2016

本地缓存是HTML5出现的新技术,这个技术的出现使得移动web的开发成为了可能。我们都知道,要想打造一个高性能的移动应用,速度是关键。而在HTML5之前,只有cookie能够存储数据,大小只有4kb。这严重限制了应用文件的存储,导致web开发的移动应用程序需要较长的加载时间。有了本地存储,让web移动应用能够更接近原生。

浏览器中,本地存储通过window.localStorage调用。判断浏览器是否支持本地存储的代码如下:

XML/HTML Code复制内容到剪贴板
  1. if(window.localStorage){     
  2.  alert('This browser supports localStorage');     
  3. }else{     
  4.  alert('This browser does NOT supportlocalStorage');     
  5. }     

如果我们要将数据存储到本地,最简单的方法就是为window。localStorage添加一个属性并为其赋值。例如我们要存储一个数据name,它的值为Tom,就可以通过如下方式实现:

XML/HTML Code复制内容到剪贴板
  1. window.localStorage.name = “Tom”     

这里要注意字符串变量需要引号。当我们想取出本地存储中的数据市,可以利用getItem方法。整个代码流程如下:

JavaScript Code复制内容到剪贴板
  1. var storage = window.localStorage;     
  2. storage.name = “Tom”;     
  3. //取出name数据     
  4. var name1 = storage.getItem(“name”);     
  5. alert(name1);     

这段代码在Chrome浏览器控制台中的显示结果就是一个显示Tom的提示框。可见我们已经通过这种方式正确的进行了数据的存储与读取。

如果我们想删除这些存储的数据,可以使用removeItem方法。在以上代码中加入如下代码:

JavaScript Code复制内容到剪贴板
  1. storage.removeItem(“name”);     

这时当我们再次alert的时候将显示null,因为这个数据已经被清空了。

了解了一些基本的本地存储用法和思想后,我们来系统的介绍一下本地存储

本地存储分为三大类:localStorage/sessionStorage/本地数据库

localStorage和sessionStorage二者的用法、所包含的函数、调用方法等都是相同的,二者仅仅是含义不同。其中,localStorage所存储的数据是长期有效的,而sessionStorage所存储的信息当每个会话(session)关闭时就会销毁(通俗的说就是页面关闭后数据自动销毁)。

由于二者的特性不同,因此应用的场景也有很大区别。通常,当我们需要存储一些用户配置项等一些需要长时间存储的数据信息时,需要使用localStorgae进行保存,利用了其时效长的特点。相应的,当我们需要实现类似购物车等基于session的功能时,就需要使用sessionStorage。

由于localStorage和sessionStorage的用法相同,因此我们以localStorage为例,介绍二者的方法。

1、设置数据setItem
用法为localStorage.setItem(“key”, “value”),表示将value值传递给key。(sessionStorage.setItem使用方法同理,下面不再一一介绍)

2、获取数据getItem
用法为localStorage.getItem(“key”),只要输入相应的key值,就可以从中取出对应的value值。

3、删除特定的数据removeItem
用法为localStorage.removeItem(key),删除key对应的数据。

4、清空所有数据clear
用法为localStorage.clear(),表示清空所有存储系统中的数据。

以上就是一些最基本的sessionStorage/localStorage用法,希望对大家的学习有所帮助。

HTML / CSS 相关文章推荐
10个很棒的 CSS3 开发工具 推荐
May 16 HTML / CSS
CSS3 @font-face属性使用指南
Dec 12 HTML / CSS
简单掌握CSS3中resize属性的用法
Apr 01 HTML / CSS
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
Apr 26 HTML / CSS
CSS3动画:5种预载动画效果实例
Apr 05 HTML / CSS
canvas实现飞机打怪兽射击小游戏的示例代码
Jul 09 HTML / CSS
Html5 实现微信分享及自定义内容的流程
Aug 20 HTML / CSS
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
Nov 22 HTML / CSS
检测浏览器是否支持html5视频的代码
Mar 28 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
Jun 02 HTML / CSS
HTML5中外部浏览器唤起微信分享
Jan 02 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
Aug 20 HTML / CSS
逼真的HTML5树叶飘落动画
Mar 01 #HTML / CSS
HTML5+CSS3绘制锯齿状的矩形
Mar 01 #HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
Mar 01 #HTML / CSS
解析HTML5中的新功能本地存储localStorage
Mar 01 #HTML / CSS
基于HTML5的齿轮动画特效
Feb 29 #HTML / CSS
HTML5中meta属性的使用方法
Feb 29 #HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
Feb 29 #HTML / CSS
You might like
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
JavaScript多线程详解
2015/08/12 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
js实现时间日期校验
2020/05/26 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
python进阶教程之异常处理
2014/08/30 Python
Python下rrdtool模块的基本使用方法
2015/11/13 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
用友笔试题目
2016/10/25 面试题
开学季活动策划方案
2014/02/28 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
反对邪教标语
2014/06/30 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
长江三峡导游词
2015/01/31 职场文书
慰问信格式规范
2015/03/23 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
python实现批量移动文件
2021/04/05 Python
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android