点击这里给我发消息 点击这里给我发消息

HTML5之前的本地存储

添加时间:2013-12-6
    相关阅读: 设计 开发 解决方案 方案 页面 数据库 网络
本地持久化存储一直是本地客户端程序优于 web 程序的一个方面。对于本地应用程序,操作系统会一共一个抽象层,用于存储和获取特定于应用程序的数据,例如用户设置或者运行时状态。这些值可以被存储于注册表、INI 文件,或者其他什么地方,这取决于操作系统的实现。如果你的本地应用程序需要不简单是键值对形式的本地存储,你也可以使用嵌入式数据库、发明你自己的文件格式,或者其他很多种解决方案。

然而,web 应用程序就没这些优点了。于是在 web 早期我们就发明了 cookie,目的是在本地持久存储少量数据。但是,cookie 有三个致命缺点:

?cookie 会包含进每一个 HTTP 请求,因此会减慢 web 应用程序,产生不必要的重复数据;

?cookie 会包含进每一个 HTTP 请求,因此网络上发送的数据就不能加密(除非你的整个应用都是用的 SSL)

?cookie 限制数据大小为 4 KB——这已经足以降低你的应用程序的速度,但是 4 KB 的大小有时候确实会捉襟见肘。

我们真正想要的是:

?更大的存储空间

?在客户端上的

?不受页面刷新的影响

?不需要提交到服务器

在 HTML5 之前,我们没有任何办法能够同时满足以上要求。

HTML5 之前的解决方案

一开始,我们的浏览器只有 Internet Explorer。或者说,那是 Microsoft 所期望的世界。到后来,在第一次浏览器大战期间,Microsoft 发明了一大堆东西,全部包含进了 Internet Explorer,而这个浏览器赢得了第一次浏览器大战。这其中之一就是 DHTML 行为(DHTML Behaviors),其中有一个行为叫做“用户数据 userData”。

userData 允许每一个域名的页面保存64KB数据,包括有层次结构的基于 XML 的结构。(受信域名,例如 intranet 站点,可以存储10倍于这个数字,也就是640KB。这几乎对任何人都已经足够了。)IE 不会有任何授权对话框,也不能增加额外的存储空间。

2002年,Adobe 在 Flash 6 引入了一项新的特性,却有一个明显会误导的名字:Flash cookie。在 Flash 环境下,这个特性被称为 Local Shared Object。简单来说,它允许每个域名的 Flash 对象存储100KB数据。Brad Neuberg 开发了一个 Flash-JavaScript 桥的早期原型,称为 AMASS(AJAX Massive Storage System),但它受限于 Flash 的设计怪癖。直到2006年,Flash 8 提供了 ExternalInterface,这么一来就可以由 JavaScript 直接访问 LSO,因此访问速度提升了一个数量级,变得更简单更快速。Brad 重写了 AMASS,并将其集成在 Dojo Toolkit 的 dojox.storage 中。Flash 给每个域名100KB的自由空间。如果超出,则允许按照数量级增加(1Mb、10Mb等等)。

2007年,Google 提供了 Gears,一个开源的浏览器插件,旨在为浏览器提供额外的功能。(我们曾经在为 IE 提供地理位置API的时候介绍过 Gears。)Gears 提供了一组基于 SQLite 的嵌入式数据库的 API。只要用户一次授权,Gears 能够按照域名在 SQL 数据库表中存储无限大小的数据。

与此同时,Brad Neuberg 和其他人继续 dojox.storage 的开发,以提供一种对这类插件和 API 的统一的接口。2009年,dojox.storage 能够自动检测(在其上层提供一种统一的接口)Adobe Flash、Gears、Adobe AIR 和 HTML5 存储的早期原型(仅有 Firefox 的一个较老版本实现)。

正如你所看到的这些解决方案,它们都有或多或少的问题:不是特定于某一浏览器,就是需要安装第三方插件。我们还需要对不同之处做一种“屏蔽”(正如 dojox.storage 所做的那样),它们有着不同的接口、不同的存储限制、不同的用户体验。这就是 HTML5 所要解决的问题:提供一种标准的 API,由多种浏览器提供原生支持,不需要安装第三方插件。

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册