sessionStorage最大的用途用于保存一些临时的数据防止用户意外刷新页面,但是,在浏览器意外关闭并恢复页面时,sessionStorage中存储的信息将会丢失。
Firefox默认允许一个域名存储5120kB的数据。
注:firefox的sessionStorage特性必须要在服务器上发布才有效。
●局部存储(1ocal storage)。
为了在客户机上存储持久数据,自从新的工作组草案于2008年6月10日官方正式介绍本地存储后,HTML5已经使用全局存储。
全局存储允许一个web应用在客户机上存储数据,该数据能被创建该存储对象以外的其他域所存储。
根据相关规范,你可以定义一个被任何域识别的全局存储对象。(globalStorage[”].foo=“bar”;)来自特定的顶级域(globalStorage[‘com’].foo=“bar”;),然后依次往下一个域(globalStorage[‘example.com’].foo=“bar”;?)。所有域在相等或更低级别上定义的一个全局存储对象可以互相访问它们的存储数据。这些都是规范上所说的。作为普通的浏览器开发商采用一些细小的差别(这是出于丰厚的利润的原因)。Firefox2.0&3.0根本不允许公共的数据存储或者是使用TLD(toplevELDomain)。Firefox3.0甚至阻止子域对较高级别域上数据的存储。你只能从完全相同的域中存取一个全局存储对象。由于局部存储,新的更好的全局存储版本,你不能定义域,它是自动地与web应用运行时的脚本的源相联系。注意WebKit和Intemet Explorer 8 beta 2允许子域存取它们优先域的数据,可以和规范上的说法进行比较。全局存储和局部存储都是通过任一浏览器的窗口进行存取。就算浏览器被关闭数据也会一直保持,这一点不同于对话期存储。
在Mac 0S x系统下,Firefox3.0保存这些持久性数据在下面路径的SQLite file里:
/Users/[username]/Library/ApplieationSupport/Firefox/Profiles/[randornstring]/webappsstore.sqlite
在WindowsXP系统下保存在:
C {DocumentaandSettings\[username] \ ApplicationData\Mozilla|Firdox|Profiles \[ random string ] webappsstore.sqlite
●数据库存储(database storage)。
类似于Google GE ,HTML5的数据库存储允许一个web应用保存结构型数据,并在客户机端使用一个真正的SQL数据库。这一特性将允许非常强大的应用程序的开发。
一个简单的例子是通过webKit开发人员发布的。它目前只支持数据库存储(最新版本还支持seS—sion和local存储),像前面两个存储类型一样,你只能保存字符串和变量,且只能通过创建的那个域来访问。它的语法可以会存在一些问题。想要完整地参考请查看HTML5草案。现在展示一些快速而简单的例子:
db=openDatabase(“dbTest”,“1.0”,“First Database'’,300000);
db.transaction(function(tx){tX.executeSql(“CREATE TABLEMyTb(id REAL)”);});
db.transaction(function(tx)}tX.executeSql(“SELECT *FROMMyTb'’,[],function(tX,reSult){alert(result.1OWS.item(0)[‘id’]);});WebKit(Safari等等)使用SQLite作为数据库端。
在Mac OS X下你能发现数据库文件存放在:
/Users/[usemame]/Library/Safari/Databases
在Windows XP下数据库文件存放在:
C:\Documents and Settings\[username]\LoealSettin4gs\ApplicationData\AppleComputer\\ safari \ Databases
3 结束语
HTML5结构化客户端存储对Web开发者而言是一个强有力的器具,但是也加进了新的风险。这一存储技术尚未完全实现。但是由于浏览器销售商和Web开发者的激情,在未来将看到这项应用技术成指数级的增长。
最终,浏览器生产商将允许更多的控制终端让用户去管理HTML5客户端存储,而局部存储将会取代全局存储。开发离线应用的需求会越来越多,其中包括目前流行的yahool widget和microsoft silverlight。