localStorage和sessionStorage的使用方法和一些特性介绍

本文主要介绍的是localStorage和sessionStorage的使用方法和一些特性,以及一些其他的存储方式的比较。

客服端存储方案包括以下几种:

1、Cookie

2、UserData

3、Flash SharedObject

4、Google Gears

5、Web SQL Database

6、WebStorage

7、IndexedDB(Indexed Database)

把Cookie抛开,以上几种存储方案2-5不建议使用,原因见下文详解。把Cookie抛开不论,是因为它是不可缺少的,Cookie的作用是跟服务器进行交互,作为HTTP规范的一部分。而以上其他的方案都是为了在本地“存储”数据而生。

暂时推荐使用第6种方案,但是因为WebStorage只兼容到IE8+ ,所以他需要和UserData配合使用(用于兼容),详解见下文。

Cookie

    略过。。。

UserData

    它由Microsoft公司在IE5中引用,是保存在用户本地的一块持久话数据,除非你手动删除或者设置过期时间,否则它将一直保存在本地终端,只有IE5-IE9支持。它借助了DHTML的Behaviour属性来存储本地数据,没个页面最大限制64K数据,每个站点最大限制640K数据。

缺点:并非WEB标准,只有IE5-IE9支持,无法有效解决浏览器兼容。

Flash SharedObject

它允许你在本地客户端的硬盘或是服务器上存储所有flash支持的数据(Number, String, Array, Boolean, Object, XML等),数据会永久性保存,没有过期时间,可以通过设置管理器或调用clear()方法清除。按存放位置可以分为本地共享对象和远程共享对象。默认存储大小为100KB,用户可以手动设置,最大为10M。

缺点:它的缺点就是因为它是Flash。Flash有安全,稳定性差,好系统资源等缺点。

Google Gears

Google于07年发布的一个开源浏览器插件,内置了一个基于SQLite的嵌入式SQL数据库,并提供了统一的API访问数据库。在取得用户授权之后,每个站点可以在数据库中存储大小不限的数据。但是Google早在chrome 12.0 中就已经放弃了对它的支持。

缺点:就是因为Google都已经放弃它了

Web SQL Database

HTML5引入的一个用来处理大量结构化数据的方案。它是使用SQL来操纵客户端数据库的API,规范中使用的语言是SQLlite,但是这个方案基本已经废弃了。因为W3C规范已经停止使用此规范了。

缺点:就是因为W3C已经停止使用此规范,也就是说这是一个废弃的标准。

Web Storage

这是本文推荐的一个存储方案,所以会做一个详细介绍。

1、介绍

Web Storage是由两部分组成:localStorage、sessionStorage。localStorage用于持久化数据存储,不主动删除,数据是永远不会过期的(包括清除缓存)。sessionStorage顾名思义(session)是用于存储一个会话中的数据,当会话结束数据会随之销毁。因此sessionStorage不能用来作持久化数据存储。

存储形式:Key value 名值对

存储空间: IE:10MB; Chrome4+,Safari4+:2.5MB; Firefox4+,Opera10.5+:5MB

兼容:IE8+;chrome4+; firefox3.5+ ; safari4+ ;  Opera10.5+

属性和方法:

setItem(key,value)

将value值存储到本地的key字段

getItem(key)

获取指定key本地存储的值

removeItem(key)

删除指定key本地存储的值

clear()

删除存储的所有数据

key(index)

根据索引获取一个指定位置的键名

length

获取存储的键值对的数量

示列:

localStorage.setItem("name","Ch"); //存储(修改)一条key值为name的数据,并且value值为:Ch

localStorage.getItem("name"); //获取Key值为name的value值

localStorage.reomveItem("name"); //删除Key值为name的数据

localStorage.clear();//清除所有存储在localStorage的数据

注意:1、sessionStorage方法同上。

            2、此方案保存的是字符串,如果是JSON数据,得调用stringify()方法转成字符串再保存。

事件:

storage 当localStorage和sessionStorage的数据产生变化时会触发此事件,storage事件有如下属性:

storageAera: 表示存储类型(session或者local)

key: 发生改变项的key

oldValue: key原来的值

newValue: key改变后的值

url:导致key发生改变的url

示列:

//假如已存储 localStorage 数据   key:name,value:Ch

window.addEventListener("storage",function(e){

console.log("改变的Key:"+e.key);
            console.log("旧值:"+e.oldValue);
            console.log("新值:"+e.newValue);
            console.log("发生变化的URL:"+e.url);

});

localStorage.setItem("name","huihui");   //所在页面   app/list.html

上面代码会输出

改变的Key:name

旧值:Ch

新值:huihui

发生变化的URL:app/list.html

类型:local

还有一点需要注意,在Firefox和Chrome中对storage事件的触发有点不同, 自身页面调用setItem()改变某键的值后并没有触发window的storage事件, 但是如果同时访问A.html和B.html, 在A页面中调用setItem()改变某键的值后能触发B页面中的storage事件, 反之同理。而在IE9中, 自身页面调用setItem()改变某键的值后也能触发window的storage事件。

缺点:不支持IE7-,如需兼容需要配合UserData使用。
WebStorage容量大、易用、原生支持等优点都使它成为首选的本地存储方案,当然它的安全性也较差,不能用它来保存敏感信息。

IndexedDB

Indexed Database 是Oracle于2009年提出的,简称IndexedDB,是一种能让你在用户的浏览器中持久地存储结构化数据的数据库,为web应用提供了丰富的查询能力。它使用对象来保存数据,按域名分配独立空间,一个独立域名下可以创建多个数据库,每个数据库可以创建多个对象存储空间,一个对象存储空间相当于一个数据库表,可以存储多个对象数据。目前仅Chrome11+/Firefox4+/IE10支持。Firefox4+支持最大存储50MB的数据(移动端5MB),chrome11+支持最大存储5MB的数据。

缺点:目前仅Chrome11+/Firefox4+/IE10+支持

时间: 2024-08-05 07:04:59

localStorage和sessionStorage的使用方法和一些特性介绍的相关文章

HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等

HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localStorage 则会一直保存.我们这里以 localStorage 为例,简要介绍下 HTML5 的本地存储,并针对如遍历等常见问题作一些示例说明. localStorage 是 HTML5 本地存储的 API,使用键值对的方式进行存取数据,存取的数据只能是字符串.不同浏览器对该 API 支持情况有所差

HTML5 本地存储 localStorage、sessionStorage 的遍历、存储大小限制处理

HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localStorage 则会一直保存.我们这里以 localStorage 为例,简要介绍下 HTML5 的本地存储,并针对如遍历等常见问题作一些示例说明. localStorage 是 HTML5 本地存储的 API,使用键值对的方式进行存取数据,存取的数据只能是字符串.不同浏览器对该 API 支持情况有所差

使用HTML5 Web存储的localStorage和sessionStorage方式

localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同意可以使用,关闭浏览器之后数据就会消失. HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localStorage 则会一直保存.我们这里以 localStora

cookie、session、localStorage、sessionStorage区别

cookie.session 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. cookie 1.1  Cookie机制 在程序中,会话跟踪是很重要的事情.理论上,一个用户的所有请求操作都应该属于同一个会话

HTML5本地存储localStorage、sessionStorage及IE专属UserData

By:王美建 from:http://www.cnblogs.com/wangmeijian/p/4518606.html 转载请保留署名和出处! 在客户端存储数据用的最普遍的方式非cookie莫属,随着HTML5的普及,新的本地存储方式localStorage和sessionStorage将在标准浏览器上大展身手.localStorage和sessionStorage是HTML5的新特性之一,说是新特性,其实微软公司早在IE8上就已经支持localStorage和sessionStorage这

javascript判断一个对象是否是空对象,localStorage和sessionStorage区别

判断一个对象是否是空对象: var obj ={}; 1. if(JSON.stringify(newobj)=="{}"){ console.log('kongduixiang')  }else{ console.log('hehe')  } 2. if(Object.keys(newobj).length == 0){ console.log('kongduixiang'); } localStorage和sessionStorage区别: localStorage和session

浅析localstorage、sessionstorage

原文链接:http://caibaojian.com/localstorage-sessionstorage.html 简介 html5 中的 web Storage 包括了两种存储方式:sessionStorage 和 localStorage. sessionStorage 用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问,会话结束后数据也随之销毁.localStorage 用于存储一个域名下的需要永久存在在本地的数据,这些数据可以被一直访问,直到这些

localStorage、sessionStorage用法总结

localStorage和sessionStorage一样都是用来存储客户端临时信息的对象. 他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现). localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在. sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了. 不同

本地存储(localStorage、sessionStorage、web Database)

一.sessionStorage和localStorage sessionStorage和localStorage两种方法都是当用户在inPut文本框中输入内容并点击保存数据按钮时保存数据,点击读取数据按钮时读取保存后的数据.不过使用sessionStorage时,只能局限于当前页面,如果关闭浏览器,数据就会丢失,下次打开浏览器就会读不到数据.如果使用localStorage时,即使浏览器关闭,下次打开浏览器仍能读取到上次被保存的数据.但是数据的保存时按不同浏览器分别进行的,也就是说,如果打开别