localStorage(本地存储)和sessionStorage(会话存储)是HTML5的WebStorage提供的两种API,区别如下:
localStorage的生命周期是永久的,关闭页面或浏览器之后localStorage中的数据也不会消失。除非主动删除数据,否则数据永远不会消失。
sessionStorage的生命周期是仅在当前会话下有效。sessionStorage引入了一个“浏览器窗口”的概念,sessionStorage是在同源的窗口中始终存在的数据。只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在。但是sessionStorage在关闭了浏览器窗口后就会被销毁。同时独立的打开同一个窗口同一个页面,sessionStorage也是不一样的。
localStorage和sessionStorage的存储数据大小一般都是:5MB
localStorage和sessionStorage都保存在客户端,不与服务器进行交互通信。
localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理
localStorage:window.localStorage;sessionStorage:window.sessionStorage
localStoragese:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据。sessionStorage:敏感账号一次性登录;
cookie为4KB,而WebStorage是5MB;
WebStorage不会传送到服务器,存储在本地的数据可以直接获取,也不会像cookie一样美词请求都会传送到服务器,所以减少了客户端和服务器端的交互,节 省了网络流量;
对于那种只需要在用户浏览一组页面期间保存而关闭浏览器后就可以丢弃的数据,sessionStorage会非常方便;
有的数据存储在WebStorage上,再加上浏览器本身的缓存。获取数据时可以从本地获取会比从服务器端获取快得多,所以速度更快;
WebStorage不会随着HTTP header发送到服务器端,所以安全性相对于cookie来说比较高一些,不会担心截获,但是仍然存在伪造问题;
setItem (key, value) —— 保存数据,以键值对的方式储存信息。
getItem (key) —— 获取数据,将键值传入,即可获取到对应的value值;
removeItem (key) —— 删除单个数据,根据键值移除对应的信息。
clear () —— 删除所有的数据;
key (index) —— 获取某个索引的key
保存数据的方法:
读取数据的方法:
保存数据的方法:
读取数据的方法:
1、所谓的浏览器页面之间共享信息只能由localStorage来完成,并且前提是相同的域名、协议和端口号,对于sessionStorage来说,即使域名、协议和端口相同,那么sessionStorage的信息也是无法共享的
2、localStorage生命周期是永久,这意味着除非用户手动清除localStorage信息,否则这些信息将永远存在,sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。
在保存数据时,若使用sessionStorage读取或保存数据,则使用sessionStorage对象并调用该对象的读写方法;若使用localStorage读取或保存数据,则使用localStorage对象并调用该对象的读写方法。在进行读写时,不管是哪个对象,都可以通过该对象的getItem方法来读取数据,也可以该对象的自定义属性值读取数据;可以通过该对象的setItem方法保存数据,也可以通过该对象的自定义属性值保存数据。保存数据时按“键名/键值”的形式进行保存。当通过该对象的getItem方法读取数据时,将参数指定为键名,该方法返回键值;当通过该对象的自定义属性值读取数据时,可以将该对象的某个自定义属性名作为键名,访问该自定义属性的属性值即可得到键值;当通过该对象的setItem方法保存数据时,将第一个参数指定为键名,将第二个参数指定为键值;当通过该对象的自定义属性值保存数据时,可以将该对象的某个自定义属性名作为键名,然后直接将该自定义属性值设置为键值。在保存数据时不允许重复保存相同的键名。保存后可以修改键值,但不允许修改键名(只能重新取键名,然后再保存键值)。