随着互联网的普及,基于浏览器/服务器的瘦客户端应用开始占据主流地位。网络的普及解决了部署和更新C/S应用程序的困难。基于浏览器的瘦客户端应用程序在网络服务器上部署和更新,因此无需在客户端计算机上显式部署和管理应用程序的任何部分。然而,与此同时,瘦客户机应用程序的缺点也是显而易见的:1)由于采用了用户界面形式的HTML页面和网络速度的影响,客户机的数据处理能力略低于C/S应用程序,用户体验相对较差。它不能像C/S那样快速地响应用户请求,也不能显示具有丰富效果的数据。2)浏览器必须始终具有网络连接,这意味着用户在断开连接时将无法访问应用程序。再次连接时,必须重新输入数据,这增加了应用程序的复杂性。RIA技术的使用使客户机和服务器在数据处理方面有了更好的平衡,并分担了数据处理的压力。同时,RIA使用了一个相对健壮的客户端描述引擎,它可以提供一个具有快速响应速度和丰富图形的用户界面。本文研究了基于HTML5和Flex技术的离线存储。通过将数据直接存储在客户机中,可以加速网络应用程序的响应。自从1999年12月HTML 4.01发布以来,后续的HTML5和其他标准都被搁置了。为了促进网络标准化的发展,一些公司加入了进来。一个叫做网络超文本应用技术工作组的组织成立了。HTML5草案的前身被命名为Web应用1.0,由WHATWG在2004年提出,在2007年被W3C接受,并建立了一个新的HTML工作组。HTML 5的第一份正式草案于2008年1月22日发布。HTML 5有两个主要特性:新的布局元素,包括日历控件、地址卡、标尺和进度条,以及视频和音频支持,它们增强了网页的性能。网络存储提供了一种在客户端存储数据的新方法,HTML5提供了两种在客户端存储数据的新方法:无时间限制的本地存储——数据存储,这是HTML5的一个新功能。会话存储——为网站提供了一种在本地计算机上存储和提取数据的方法,用于会话的数据存储HTML5存储。以前,所有这些都是通过Cookie机制完成的,但是Cookie仅适用于具有少量数据的数据存储,因为它们通过每个请求传输到服务器,这使得Cookie速度慢且效率低。在HTML5中,数据不是由每个服务器请求和传递的,而是仅在被请求时使用。它可以在不影响网站性能的情况下存储大量数据。对于不同的网站,数据存储在不同的区域,一个网站只能访问自己的数据。HTML5使用JavaScript来存储和访问数据。首先,有必要检查浏览器是否支持HTML5存储,因此当使用HTML5时,首先有必要检查所使用的浏览器是否支持HTML5。目前,主要的浏览器支持HTML5,如表1所示:21431023A-0.jpg HTML5本地存储是基于键值对的,数据是通过键保存和提取的,键是字符串类型。相应的存储数据可以是JavaScript支持的类型,但是在实际存储时仍然以字符串的形式存储,因此在提取数据时需要进行必要的强制类型转换,如:parseInt()、parseFloat()等。尽管HTML5的存储空间已经变得更大,但仍有大小限制。它的最大存储空间是5M,但对于存储在字符串中的数据来说,这已经是一个很大的空间了。HTML5为本地存储提供了必要的API接口,包括查找与该键对应的键值以及添加和删除键值对内容。Flex技术flex使用动作脚本3编程语言。ActionScript 3是一种基于ecmascript languagespec 6应用程序的强大的面向对象编程语言,第三版[1]。这是一个高效且免费的开源框架,可以构建富有表现力的移动、网络和桌面应用程序。Flex允许您构建共享公共代码库的网络和移动应用程序,从而减少应用程序创建和长期维护的时间和成本[2]。目前,几种成熟的RIA客户端开发技术包括Adobe Flash/Flex、JavaScript、Dojo和微软Avalon。Adobe Flex是一个演示服务器和应用程序框架,可以满足企业的需求 灵活编程是基于灵活用户界面组件库和基于XML的MXML定义丰富的用户界面,使用面向对象的脚本语言(Ac?用来处理程序逻辑,由Flex服务器翻译成SWF格式的客户端应用程序,在闪存播放器中运行。Flex提供全面的音频、视频和实时对话通信技术,使RIA拥有前所未有的高交互性和丰富的用户体验的在线用户体验。Adobe AIR是由Adobe开发的一项技术,用于网络和桌面应用程序的结合。它不用浏览器就能控制网络上的云程序。因为这是一项由Adobe开发的技术,所以它可以通过Adobe的Flex、Flash和其他应用程序([3)成功开发。Flex与AIR结合也可以实现数据的离线存储,但AIR需要安装,这对目前浏览器的普及意义不大。空气程序可以检测网络的连接。当网络连接时,AIR将关闭并在本地的网络服务器上保存最新的数据,这些数据可以是XML格式的,也可以存储在本地的数据库sqlLite中。一旦空气程序检测到网络断开,空气程序将开始使用本地数据来实现离线操作的功能。3示例应用先前介绍了结合AIR技术的HTML5和Flex的本地存储在离线存储中的特性。接下来,我们选择结合Flex和HTML5来演示离线存储的功能,并结合HTML5和Flex的优势。选择Flex作为表示层来展示我们的示例程序,并结合HTML5离线存储中的本地存储功能,实现了一个可以离线运行的丰富的互联网程序。灵活和超文本标记语言的交互是通过JavasCript实现的,这里是简单的灵活交流?调用JavasCript来实现程序。首先,在灵活端动作脚本中,通过外部接口调用JavaScript代码来保存HTML页面登录成员的信息。Flex的ExternalInterface.call()方法调用一个JavaScript函数,在本例中是JavaScript的登录方法。公共函数调用登录(): void { if(ExternalInTerface . available){ var wrapperFunctions : String=' log in ';外部接口.调用(wrapperFunction,key.text,val . text);}否则{跟踪(“包装器不可用”);}}其中wrapperFunction是JavaScript中的函数名,该函数名对应的方法有或没有参数。在这种情况下日志?in方法有两个参数,分别传递用户名和密码。JavaScript端的登录函数如下:函数登录(名称、密码){//首先确定浏览器是否支持HTML5本地存储(类型(本地存储)='未定义'){警告('您的浏览器不支持HTML 5本地存储');}否则{try {//将键值对存储在localstorage.setitem(名称、密码)中;if(localStorage.getItem(a)!=null){//从localStorage提取数据以修改页面标题窗口. document . title=LocalStorage . getitem(a);警报(“页面标题已更改”);} }捕获(e){如果(e==QUOTA _ EXPENDED _ ERR){警报(“配额已取消!”);}}}这样,Flex生成的flash文件通过对象标签嵌入到了超文本标记语言中。Flex接受来自服务器的数据,然后将其保存到HTML5的本地存储器中。这样,在网络中断后,flash可以调用存储在本地存储器中的数据,在HTML5中显示内容,实现数据的离线显示。结论介绍了Flex结合AIR离线存储和HTML5本地存储离线存储的特点,提出利用Flex技术结合HTML5以Flex为表示层提供良好的交互性,然后利用HTML5本地存储功能实现真正的离线运行的网络程序。它涉及到Flex对JavaScript方法的调用。大规模应用的发展需要进一步的研究。然而,本文中相关技术的引入可以为离线web程序的开发提供解决方案,并开发出能够更好地满足各种需求的web程序。