本地存储Web Storage

使用HTML 5的Web Storage功能,可以在客户端存储更多的数据,而且可以实现数据在多个页面中共享甚至是同步。

  cookie存储数据的不足

cookie可用于在程序间传递少量的数据,对于web应用来说,它是一个在服务器和客户端之间来回传送文本值的内置机制,服务器可以根据cookie来追踪用户在不同页面的访问信息。正因为其卓越的表现,在目前的web应用中,cookie得到了最为广泛的应用。然而它有一些不足的地方:

1、大小的限制:cookie的大小被限制在4kb。在web的富应用环境中,不能接受文件或者邮件那样的大数据;

2、带宽的限制:只要有涉及cookie的请求,cookie数据都会在服务器和浏览器间来回传送。这样无论访问哪个页面,cookie数据都会消耗网络的带宽;

3、安全风险:由于cookie会频繁地在网络中传送,而且数据在网络上是可见的,因此在不加密的情况下,是有安全风险的;

4、操作复杂:在客户端的浏览器中,使用JavaScript操作cookie数据是比较复杂的。但是服务器可以很方便地操作cookie数据。

  使用Web Storage存储的优势

Web Storage可以在客户端保存大量的数据,而且通过其提供的接口,访问数据也非常方便。然而,Web Storage的诞生并不是为了替代cookie,相反,是为了弥补cookie在本地存储中表现的不足。其优势在以下几个方面:

1、存储容量:提供更大的存储量。在Firefox、Chrome、Safari和Opera中,每个网域为5MB;在IE8及以上则每个网域为10MB;

2、零带宽:Web Storage中的数据仅仅是存储在本地,不会与服务器发生任何交互行为,所以不存在网络带宽的占用问题;

3、编程接口:Web Storage听歌了一套丰富的编程接口,使得数据操作更加方便;

4、独立的存储空间:每个域,包括子域都有独立的存储空间,各个存储空间是完全独立的,因此不会造成数据的混乱。

注意:服务器可以访问cookie中的数据,但是不能访问Web Storage中的数据。

  会话存储(sessionStorage)与本地存储(localStorage)的区别

cookie和session完全是服务器端可以操作的数据,但是sessionStorage和localStorage则完全是浏览器客户端操作的数据。它们完全继承同一个Storage API,所以sessionStorage和localStorage的编程接口是一样的。sessionStorage和localStorage的主要区别在于数据存在的时间范围和页面范围不同。

时间范围:前者数据会保存到存储它的窗口或标签关闭时;后者的数据生命周期比窗口或浏览器的生命周期长。

页面范围:前者数据只在构建他们的窗口或标签页内可见;后者的数据可被同源的每个窗口或标签页共享。

  使用Web Storage

检查浏览器是否支持 Web Storage,如:

设置和获取Storage数据:

sessiongStorage和localStorage作为window的属性,完全继承Storage API,它们提供的操作数据的方法完全相同。

1、保存数据到sessionStorage,如:

2、从sessionStorage中获取数据,如:

3、设置和获取数据的其他写法,对于访问Storage对象还有更简单的方法,根据“键”和“值”的配对关系,直接在sessionStorage对象上设置和获取数据,可完全避免调用setItem()和getItem()方法,如:

这种灵活的使用方法,给编程带来极大的灵活性。当然,对于localStorage来说,同样具有上述设置数据和获取数据的方法。

使用sessionStorage和localStorage实战:

使用Storage对象保存页面内容:

链接:https://cruxf.github.io/WebStorage/sessionStorage.html

  存储JSON对象的数据

虽然使用Web Storage可以保持任意的“键/值”对数据,但是一些浏览器把数据限定为字符串类型,而且对于一些复杂结构的数据,管理起来比较混乱。不过对于复杂结构的数据,可以使用现代浏览器都支持的JSON对象来处理。

1、序列化JSON格式的数据

由于Storage是以字符串保存数据的,因此在保存JSON格式的数据之前,需要把JSON格式的数据转换为字符串,称为序列化。可以使用JSON.stringify()序列化JSON格式的数据未字符数据,如:

2、把数据反序列化为JSON格式

如果把存储的Storage中的数据以JSON格式对象去访问,需要把字符串数据转换成JSON格式的数据,称为反序列化。可以使用JSON.parse()反序列化字符串数据未JSON格式的数据,如:

案例:

链接:https://cruxf.github.io/WebStorage/jsonstorage.html

  Storage API的事件

有时候,会存在多个网页或标签页同时访问存储数据的情况。为保证修改的数据能够及时反馈到另一个页面,HTML 5的Web Strage内建立一套事件通知机制,会在数据更新时触发。无论监听的窗口是否存储过该数据,只要与执行存储的窗口是同源的,都会触发Web Storage事件。

  课外作业:了解本地数据库Web SQL

HTML 5入门知识(五)的更多相关文章

  1. TypeScript入门知识五(面向对象特性二)

    1.泛型(generic) 参数化的类型,一般用来限制集合的内容 class Person { constructor(private name: string) { } work() { }}var ...

  2. TypeScript入门知识五(面向对象特性一)

    1.类(class) 类是TypeScript的核心,使用TypeScript开发时,大部分代码都是写在类里面的. 类的定义 ,属性控制符 public(允许外部访问,也是默认的方式),private ...

  3. SCARA——OpenGL入门学习五六(三维变换、动画)

    OpenGL入门学习(五) 此课为三维变换的内容,比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果, 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能 ...

  4. Python基础入门知识

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...

  5. Web前端入门知识

    第一阶段:理论知识 第一章:协议理解 第二阶段:了解知识 第二章:前端简介 第三阶段:入门知识 第三章:标签结构 第四章:常用标签 第四阶段:样式搭配 第五章:样式初见 第六章:属性选择 第七章:属性 ...

  6. Httpd服务入门知识-https(http over ssl)安全配置

    Httpd服务入门知识-https(http over ssl)安全配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SSL会话的简化过程 ()客户端发送可供选择的加密方式, ...

  7. Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机

    Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.虚拟主机实现方案 1>.Apache httpd 有三种实现虚 ...

  8. Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

    Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.基于用户的访问控制概述 认证质询: WWW-Auth ...

  9. Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇

    Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Internet与中国 Internet最早来源于美 ...

  10. 无废话ExtJs 入门教程五[文本框:TextField]

    无废话ExtJs 入门教程五[文本框:TextField] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个两个文本框.如下所示代码区的第42行位置,items: ...

随机推荐

  1. Angular - - filter 过滤器

    Filter Ng里的过滤器. currency:把一个数字格式化成货币模式(如$1,234.56).当没有提供任何货币符号时,默认使用当前区域的符号. 使用: HTML:{{ currency_ex ...

  2. JavaScript 44 Puzzlers

    http://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA==&mid=2651550987&idx=1&sn=f7a84b59de14d0b ...

  3. 基于ASIO的协程与网络编程

    协程 协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协程处于休眠状态.协程可以在运行期间的某个点上暂停执行,并在恢复运行时从暂停的点上继续执行. 协程 ...

  4. 结合swiper使用图片懒加载

    本人渣渣一枚,技术一般,记录下笔记,大神勿喷,可以留下优化建议,谢谢 最近刚刚做了个展示型的网站,使用swiper搭的框架,因为图片比较多,所 以首次加载稍微有些慢,虽然压缩过了,但是尽可能的优化吧, ...

  5. 在Android中用Kotlin的Anko运行后台任务(KAD 09)

    作者:Antonio Leiva 时间:Jan 19, 2017 原文链接:https://antonioleiva.com/anko-background-kotlin-android/ Anko是 ...

  6. TypeScript入门指南(JavaScript的超集)

    TypeScript入门指南(JavaScript的超集)   你是否听过 TypeScript? TypeScript 是 JavaScript 的超集,TypeScript结合了类型检查和静态分析 ...

  7. http-server 使用介绍

    做一个项目的时候需要服务环境,又不想使用apache,php,于是找到一款比较简单的易用的webserver 就是http-server 首先介绍一个怎么使用吧,http-server 是基于node ...

  8. uml的图与代码的转换——类图

    Uml是我们经常使用的统一建模语言或称标准建模语言.它的图是如何和代码对应的呢?下面我们就来就这个问题讨论一下: 首先是类:uml中的类图是这样的 在这个图中,我们可以看出,这个类图总共分了三行,第一 ...

  9. 使用rsync+inotify-tools+ssh实现文件实时同步

    假设某服务器架构中有两台web服务器(IP为192.168.1.252和192.168.1.254),一台代码更新发布服务器(IP为192.168.1.251),需要同步的目录是/data/www/, ...

  10. 64位win2003 IIS6运行32位的.NET程序

    做web服务迁移,从32位win2003迁移到64位win2003,数据库是32位Oracle在另外一台服务器上. 迁移之后数据库各种连不上,oracle的客户端32位的装完装64位的,odp.net ...