文章目录

  • 导语
  • 何为HTML5 Web 存储?
  • 浏览器支持
  • 本地存储对象
  • localStorage 本地存储介绍
  • sessionStorage 会话存储介绍
  • localStorage本地存储与sessionStorage会话存储的区别实例
  • 结语


导语

本篇文章中,将会为各位读者介绍HTML5的web存储。

何为HTML5 Web 存储?

HTML5web存储是一种比cookie更好的本地存储方式。至于为什么这么说,在HTML5问世之前,本地存储的都是在cookie中,包括每一个服务器的请求。但是我们需要更加安全与快速的存储方式,web存储则满足这些需求,而且在不影响网站性能的情况之下能够将大量数据存在本地。
但是相对的,web存储与cookie不同,存储限制相对而言更大(至少需要5MB),数据以键或者值对存在,web网页的数据只允许该网页访问使用。

浏览器支持

IE8版本以上,Firefox, Opera, Chrome, 和 Safari支持Web 存储。

本地存储对象

HTML5为客户端提供了两个存储数据的对象:
localStorage:本地存储,存储没有截止时间的数据,可以手动删除,用于长期保存网页数据。
sessionStorage:会话存储,针对session存储的临时数据,在关闭标签页后就会自动删除。
还请注意:因为有部分浏览器由于各种各样的原因,可能不支持localStorage 和 sessionStorage,因此,在使用web存储前,我们需要检查浏览器是否支持它们。

if(typeof(Storage)!=="undefined")
{
    // 支持 localStorage  sessionStorage 对象,运行此处代码
    // 其他功能代码
} else {
    // 不支持 web 存储,显示此处的消息。
}

localStorage 本地存储介绍

localStorage 对象存储的数据没有时间期限。无论是一天后,一周后,甚至时隔数年,存储在其中的数据依旧是可以使用的。
下面是示例:

// 存储
localStorage.setItem("cname", "中亿丰数字");
 
// 查找
document.getElementById("result").innerHTML = "公司名:" +  localStorage.getItem("cname");

使用 key=“cname” 和 value=“中亿丰数字” 创建一个 localStorage 键/值对。
检索键值为 “cname” 的值然后将数据插入 id=“result” 的元素中。
当然,你也可以写成如下所示:

// 存储
localStorage.cname = "中亿丰数字";
// 查找
document.getElementById("result").innerHTML = localStorage.sitename;

移除 localStorage 中的 “cname” :

localStorage.removeItem("cname");

不管是 localStorage,还是 sessionStorage,可使用的API都相同,常用的有如下几个(以localStorage为例):
保存数据:localStorage.setItem(key,value);
读取数据:localStorage.getItem(key);
删除单个数据:localStorage.removeItem(key);
删除所有数据:localStorage.clear();
得到某个索引的key:localStorage.key(index);
提示: 键/值对通常以字符串存储,当然也可根据需要调整。
下面的实例是用户点击按钮的次数。以及代码中的字符串值转换为数字类型:

if (localStorage.clickcount)
{
    localStorage.clickcount=Number(localStorage.clickcount)+1;
}
else
{
    localStorage.clickcount=1;
}
document.getElementById("result").innerHTML=" 点击了按钮 " + localStorage.clickcount + " 次 ";

sessionStorage 会话存储介绍

sessionStorage 对象和localStorage 对象类似,但是它与 localStorage 对象的区别在于,sessionStorage 对象只对一个session进行数据存储。当用户关闭标签页或者浏览器窗口之后,存储的数据也会随之删除。
这是在当前session中对按钮的计数:

if (sessionStorage.clickcount)
{
    sessionStorage.clickcount=Number(sessionStorage.clickcount)+1;
}
else
{
    sessionStorage.clickcount=1;
}
document.getElementById("result").innerHTML="点击了该按钮 " + sessionStorage.clickcount + " 次 ";

localStorage本地存储与sessionStorage会话存储的区别实例

function count() {
			if (sessionStorage.clickcount)
				sessionStorage.clickcount=Number(sessionStorage.clickcount)+1;
			else
				sessionStorage.clickcount=1;
			var zyf_now = document.getElementById("zyf_now");  
			zyf_now.innerHTML = "目前点击次数:" + sessionStorage.clickcount;  
		}

		function count2() {
			if (localStorage.clickcount)
				localStorage.clickcount=Number(localStorage.clickcount)+1;
			else
				localStorage.clickcount=1;
			var zyf_total = document.getElementById("zyf_total");  
			zyf_total.innerHTML = "总共点击次数:" + localStorage.clickcount;  
		}

将两者放一块对比,各位读者不难发现其中的差别。本地存储中的按钮即便关闭会话窗口也会计数,而会话存储中的按钮关闭窗口就会停止计数。

结语

本篇文章粗略地介绍了web存储相关的知识,希望各位读者能够通过文中的例子体会到两个存储对象的区别。