一、两个存储系统


两个存储系统

    - 万维网最初的设想,是作为展示信息的一种方式。信息处理是后来才出现的,但是Web的实质并没有变---信息在服务器上处理,然后显示给用户。因为系统没有利用计算机资源,所以复杂操作都是在服务器上完成的

    - 对于任何程序来说,能够实现数据存储是必备功能之一,并且在需要的时候能够提供数据。但在过去的Web用户端,没有能够支持数据存储的有效机制

    - cookie曾用来在客户端存储少量信息,但受其性质所限,cookie只能存储一些短的字符串

    - 在 HTML5中提供了 Web 存储 API,它是在cookie之上的增强。这个API允许我们在用户的硬盘上存储。并在日后使用这些数据。

    - 这个API 可以分成两个部分:

        - 信息必须且只在会话过程中使---sessionStorage

        - 信息必须长期保存且由用户决定时长---localStorage


二、sessionStorage


sessionStorage概述

    - sessionStorage这部分API就像是会话cookie的替代。cookie以及sessionStorage都是在特定的时间段内保持数据可用。但cookie使用浏览器作为引用,而sessionStorage使用单个窗口作为引用,这就意味着,窗口关闭之后,sessionStorage就不能再使用。


创建数据

    - sessionStorage 和 localStorage 都将数据存储为项。项采用键/值对的组合格式

    - 语法:

        - setItem(key,value): 用键和值创建项。如果键已经存在,则更新值,所以也可以用这个方法更新值

        - getItem(key): 指定要获取的项的键,根据键得到对应的值

        // 设置数据

          sessionStorage.setItem('uanme','Naruto'); 

        // 读取数据

          var name = sessionStorage.getItem('uname');


读取数据

    - API 提供了更多的方法和属性来操纵项,使得代码变得更有用

    - 属性

        - length: 返回应用程序在存储空间中积累的项的数量

    - 方法

        - key(index):获取指定索引对应的项的键

wKiom1b7yaLBo9j8AABR-fmuIq4306.png


删除数据

    - API 中提供了两个方法可以删除项

        - removeItem(key):根据项的键删除指定项

        - clear(): 清空整个存储空间。每个项都被删除

wKiom1b7yjmAFOzYAAA34VqFabM549.png


三、localStorage


localStorage概述

    - 在窗口会话期间有一个可靠的系统来存储,在某些情况下可能有用。但是,想在Web上模拟强大的桌面应用程序,则一个临时的数据存储系统就不够用

    - 为了解决这个问题,API提供了另外一个系统,为每个来源保留一个存储系统,并保持信息持久可用---localStorage

    - 利用localStorage,可以保存大量数据,并由用户决定信息是否可用,是否保留

    - localStorage与sessionStorage拥有相同的接口,所以sessionStorage的方法和属性对于localStorage都有效


storage事件

    - 由于localStorage向加载同一程序是打开的每个窗口都提供信息,所以产生了至少两个问题:

        - 各个窗口间如何通信

        - 如何更新当前没有活动或没有得到焦点的窗口信息

    - 为解决以上两个问题,API提供了storage事件

    - storage事件:存储空间每次发生变化时,都会触发这个事件。所以可以通过这个事件通知同一程序的每个窗口

    - 语法:

        - window.addEventListener('storage',updateNum,false);


总结:本章内容主要介绍了下 HTML5 Web存储API (两个存储系统、sessionStorage、localStorage)